from otree.api import * doc = """ Questionnaire """ class Constants(BaseConstants): name_in_url = 'finalresult' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): reward = models.IntegerField() # 報酬 selected_round = models.IntegerField() selected_task = models.IntegerField() selected_answer = models.IntegerField() faculty_name = models.IntegerField( label="所属学部、研究科", choices=[ [1, '文学部'], [2, '人間科学部'], [3, '法学部'], [4, '経済学部'], [5, '理学部'], [6, '医学部'], [7, '歯学部'], [8, '薬学部'], [9, '工学部'], [10, '基礎工学部'], [11, '外国語学部'], [12, '文学研究科'], [13, '人間科学研究科'], [14, '法学研究科'], [15, '経済学研究科'], [16, '理学研究科'], [17, '医学系研究科'], [18, '歯学研究科'], [19, '薬学研究科'], [20, '工学研究科'], [21, '基礎工学研究科'], [22, '言語文化研究科'], [23, '国際公共政策研究科'], [24, '生命機能研究科'], [25, '情報科学研究科'], [26, '高等司法研究科'], [27, '人文学研究科'], [28, '言語社会研究科'], [29, '連合小児発達学研究科'], [0, 'その他'], ], widget=widgets.RadioSelect, blank=True ) age = models.IntegerField(label="年齢", blank=True) gender = models.IntegerField( label="性別", choices=[ [1, '男性'], [2, '女性'], [3, 'その他'], [4, '未回答'], ], widget=widgets.RadioSelect, blank=True ) is_experimented = models.BooleanField( label="過去に同様の実験に参加したことがあるか否か", choices=[ [True, 'ある'], [False, 'ない'], ], widget=widgets.RadioSelect, blank=True ) pass # PAGES class ResultsWaitPage(WaitPage): pass class Results(Page): @staticmethod def vars_for_template(player: Player): import random player.selected_round = random. randint(1, 11) point = player.participant.vars['point_list'][player.selected_round] player.reward = int(point)+500 if player.selected_round <= 3: player.selected_task = 1 player.selected_answer = player.selected_round elif 3 < player.selected_round <= 8: player.selected_task = 2 player.selected_answer = player.selected_round - 3 else: player.selected_task = 3 player.selected_answer = player.selected_round - 8 return dict(selected_round=player.selected_round, point=point, reward=player.reward, selected_task=player.selected_task, selected_answer=player.selected_answer) @staticmethod def js_vars(player: Player): return dict(point_list=player.participant.vars['point_list']) pass class QuestionnaireOffer(Page): pass class Questionnaire(Page): form_model = 'player' form_fields = ['faculty_name', 'age', 'gender', 'is_experimented'] # this means player.~~ pass class Endpage(Page): pass page_sequence = [Results, QuestionnaireOffer, Questionnaire, Endpage]