from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'cog' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # ans1 = models.StringField( # initial='', blank=True, max_length=3, label="The answer is," # ) ans1 = models.IntegerField( blank=True, choices=[[1, "177"], [2, "179"], [3, "181"], [4, "185"]], widget=widgets.RadioSelect, label="The answer is:" ) ans2 = models.IntegerField( blank=True, choices=[[1, "298"], [2, "304"], [3, "308"], [4, "314"]], widget=widgets.RadioSelect, label="The answer is:" ) ans3 = models.IntegerField( blank=True, choices=[[1, "255"], [2, "257"], [3, "261"], [4, "265"]], widget=widgets.RadioSelect, label="The answer is:" ) ans4 = models.IntegerField( blank=True, choices=[[1, "267"], [2, "269"], [3, "271"], [4, "277"]], widget=widgets.RadioSelect, label="The answer is:" ) ans5 = models.IntegerField( blank=True, choices=[[1, "216"], [2, "218"], [3, "220"], [4, "226"]], widget=widgets.RadioSelect, label="The answer is:" ) ans6 = models.IntegerField( blank=True, choices=[[1, "248"], [2, "252"], [3, "254"], [4, "256"]], widget=widgets.RadioSelect, label="The answer is:" ) ans7 = models.IntegerField( blank=True, choices=[[1, "325"], [2, "329"], [3, "331"], [4, "333"]], widget=widgets.RadioSelect, label="The answer is:" ) ans8 = models.IntegerField( blank=True, choices=[[1, "354"], [2, "356"], [3, "362"], [4, "372"]], widget=widgets.RadioSelect, label="The answer is:" ) ans9 = models.IntegerField( blank=True, choices=[[1, "271"], [2, "275"], [3, "277"], [4, "285"]], widget=widgets.RadioSelect, label="The answer is:" ) ans10 = models.IntegerField( blank=True, choices=[[1, "286"], [2, "288"], [3, "290"], [4, "292"]], widget=widgets.RadioSelect, label="The answer is:" ) ans11 = models.IntegerField( blank=True, choices=[[1, "291"], [2, "301"], [3, "309"], [4, "311"]], widget=widgets.RadioSelect, label="The answer is:" ) ans12 = models.IntegerField( blank=True, choices=[[1, "305"], [2, "307"], [3, "309"], [4, "311"]], widget=widgets.RadioSelect, label="The answer is:" ) ans13 = models.IntegerField( blank=True, choices=[[1, "277"], [2, "285"], [3, "287"], [4, "295"]], widget=widgets.RadioSelect, label="The answer is:" ) ans14 = models.IntegerField( blank=True, choices=[[1, "305"], [2, "309"], [3, "313"], [4, "315"]], widget=widgets.RadioSelect, label="The answer is:" ) ans15 = models.IntegerField( blank=True, choices=[[1, "295"], [2, "299"], [3, "301"], [4, "303"]], widget=widgets.RadioSelect, label="The answer is:" ) ans16 = models.IntegerField( blank=True, choices=[[1, "162"], [2, "170"], [3, "172"], [4, "176"]], widget=widgets.RadioSelect, label="The answer is:" ) ans17 = models.IntegerField( blank=True, choices=[[1, "222"], [2, "224"], [3, "226"], [4, "228"]], widget=widgets.RadioSelect, label="The answer is:" ) ans18 = models.IntegerField( blank=True, choices=[[1, "198"], [2, "200"], [3, "204"], [4, "208"]], widget=widgets.RadioSelect, label="The answer is:" ) ans19 = models.IntegerField( blank=True, choices=[[1, "228"], [2, "236"], [3, "238"], [4, "240"]], widget=widgets.RadioSelect, label="The answer is:" ) ans20 = models.IntegerField( blank=True, choices=[[1, "174"], [2, "176"], [3, "178"], [4, "184"]], widget=widgets.RadioSelect, label="The answer is:" ) corr = models.IntegerField( initial='0' ) # PAGES class Inst1(Page): @staticmethod def before_next_page(player, timeout_happened): participant = player.participant import time # remember to add 'expiry' to PARTICIPANT_FIELDS. participant.expiry = time.time() + 1 * 300 def get_timeout_seconds(player): participant = player.participant import time return participant.expiry - time.time() class Q1(Page): form_model = 'player' form_fields = ['ans1'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans1') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=15, n2=25, n3=95, n4=12, n5=32, n0=1 ) class Q2(Page): form_model = 'player' form_fields = ['ans2'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans2') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=71, n2=45, n3=92, n4=60, n5=36, n0=2 ) class Q3(Page): form_model = 'player' form_fields = ['ans3'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans3') == 4: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=13, n2=84, n3=14, n4=89, n5=65, n0=3 ) class Q4(Page): form_model = 'player' form_fields = ['ans4'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans4') == 4: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=16, n2=82, n3=76, n4=70, n5=33, n0=4 ) class Q5(Page): form_model = 'player' form_fields = ['ans5'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans5') == 1: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=56, n2=15, n3=34, n4=27, n5=84, n0=5 ) class Q6(Page): form_model = 'player' form_fields = ['ans6'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans6') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=18, n2=45, n3=48, n4=43, n5=98, n0=6 ) class Q7(Page): form_model = 'player' form_fields = ['ans7'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans7') == 1: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=83, n2=57, n3=59, n4=51, n5=75, n0=7 ) class Q8(Page): form_model = 'player' form_fields = ['ans8'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans8') == 3: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=83, n2=47, n3=94, n4=98, n5=40, n0=8 ) class Q9(Page): form_model = 'player' form_fields = ['ans9'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans9') == 3: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=75, n2=69, n3=47, n4=24, n5=62, n0=9 ) class Q10(Page): form_model = 'player' form_fields = ['ans10'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans10') == 4: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=23, n2=66, n3=98, n4=86, n5=19, n0=10 ) class Q11(Page): form_model = 'player' form_fields = ['ans11'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans11') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=69, n2=36, n3=37, n4=68, n5=91, n0=11 ) class Q12(Page): form_model = 'player' form_fields = ['ans12'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans12') == 3: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=56, n2=48, n3=73, n4=43, n5=89, n0=12 ) class Q13(Page): form_model = 'player' form_fields = ['ans13'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans13') == 3: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=97, n2=11, n3=69, n4=27, n5=83, n0=13 ) class Q14(Page): form_model = 'player' form_fields = ['ans14'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans14') == 1: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=68, n2=98, n3=58, n4=48, n5=33, n0=14 ) class Q15(Page): form_model = 'player' form_fields = ['ans15'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans15') == 1: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=82, n2=25, n3=72, n4=53, n5=63, n0=15 ) class Q16(Page): form_model = 'player' form_fields = ['ans16'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans16') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=50, n2=19, n3=69, n4=20, n5=12, n0=16 ) class Q17(Page): form_model = 'player' form_fields = ['ans17'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans17') == 4: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=48, n2=43, n3=26, n4=63, n5=48, n0=17 ) class Q18(Page): form_model = 'player' form_fields = ['ans18'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans18') == 2: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=84, n2=27, n3=21, n4=30, n5=38, n0=18 ) class Q19(Page): form_model = 'player' form_fields = ['ans19'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans19') == 3: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=17, n2=54, n3=99, n4=44, n5=24, n0=19 ) class Q20(Page): form_model = 'player' form_fields = ['ans20'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def before_next_page(player, timeout_happened): if player.field_maybe_none('ans20') == 1: player.corr = player.corr + 1 def vars_for_template(player: Player): return dict( n1=21, n2=40, n3=25, n4=62, n5=26, n0=20 ) class Results(Page): @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant participant.pt6 = player.corr # real page_sequence = [Inst1, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Results]