from otree.api import * doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'effort_task_2' players_per_group = None num_rounds = 1 correct_position = 50 TREATMENT = [True, False] def check_sliders(sliders): '''returns the amount of sliders set to the correct position''' correct = 0 for slider in sliders: if slider == Constants.correct_position: correct += 1 return correct def enumerate_sliders(n): '''returns an array containing ['slider1', ..., 'sliderN']''' return [('slider'+str(i)) for i in range(1, n+1)] class Subsession(BaseSubsession): pass def creating_session(subsession): import itertools treatments = itertools.cycle(Constants.TREATMENT) for player in subsession.get_players(): player.long_term_first = False # next(treatments) class Group(BaseGroup): pass class Player(BasePlayer): # Whether the page with India's long-term goals comes before the page with its short-term goals long_term_first = models.BooleanField() slider1 = models.IntegerField() slider2 = models.IntegerField() slider3 = models.IntegerField() slider4 = models.IntegerField() slider5 = models.IntegerField() slider6 = models.IntegerField() slider7 = models.IntegerField() slider8 = models.IntegerField() slider9 = models.IntegerField() slider10 = models.IntegerField() slider11 = models.IntegerField() slider12 = models.IntegerField() slider13 = models.IntegerField() slider14 = models.IntegerField() slider15 = models.IntegerField() slider16 = models.IntegerField() slider17 = models.IntegerField() slider18 = models.IntegerField() slider19 = models.IntegerField() slider20 = models.IntegerField() slider21 = models.IntegerField() slider22 = models.IntegerField() slider23 = models.IntegerField() slider24 = models.IntegerField() slider25 = models.IntegerField() slider26 = models.IntegerField() slider27 = models.IntegerField() slider28 = models.IntegerField() slider29 = models.IntegerField() slider30 = models.IntegerField() slider31 = models.IntegerField() slider32 = models.IntegerField() slider33 = models.IntegerField() slider34 = models.IntegerField() slider35 = models.IntegerField() slider36 = models.IntegerField() slider37 = models.IntegerField() slider38 = models.IntegerField() slider39 = models.IntegerField() slider40 = models.IntegerField() slider41 = models.IntegerField() slider42 = models.IntegerField() slider43 = models.IntegerField() slider44 = models.IntegerField() slider45 = models.IntegerField() slider46 = models.IntegerField() slider47 = models.IntegerField() slider48 = models.IntegerField() slider49 = models.IntegerField() slider50 = models.IntegerField() slider51 = models.IntegerField() slider52 = models.IntegerField() slider53 = models.IntegerField() slider54 = models.IntegerField() slider55 = models.IntegerField() slider56 = models.IntegerField() slider57 = models.IntegerField() slider58 = models.IntegerField() slider59 = models.IntegerField() slider60 = models.IntegerField() slider61 = models.IntegerField() slider62 = models.IntegerField() slider63 = models.IntegerField() slider64 = models.IntegerField() slider65 = models.IntegerField() slider66 = models.IntegerField() slider67 = models.IntegerField() slider68 = models.IntegerField() slider69 = models.IntegerField() slider70 = models.IntegerField() slider71 = models.IntegerField() slider72 = models.IntegerField() slider73 = models.IntegerField() slider74 = models.IntegerField() slider75 = models.IntegerField() slider76 = models.IntegerField() slider77 = models.IntegerField() slider78 = models.IntegerField() slider79 = models.IntegerField() slider80 = models.IntegerField() slider81 = models.IntegerField() slider82 = models.IntegerField() slider83 = models.IntegerField() slider84 = models.IntegerField() slider85 = models.IntegerField() slider86 = models.IntegerField() slider87 = models.IntegerField() slider88 = models.IntegerField() slider89 = models.IntegerField() slider90 = models.IntegerField() slider91 = models.IntegerField() slider92 = models.IntegerField() slider93 = models.IntegerField() slider94 = models.IntegerField() slider95 = models.IntegerField() slider96 = models.IntegerField() slider97 = models.IntegerField() slider98 = models.IntegerField() slider99 = models.IntegerField() slider100 = models.IntegerField() question1 = models.IntegerField(widget=widgets.RadioSelect, # 1 = completely agree, 5 = completely disagree choices=[1, 2, 3, 4, 5]) question2 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question3 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question4 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question5 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question6 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question7 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question8 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question9 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4]) question10 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question11 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question12 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question13 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question14 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question15 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question16 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question17 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question18 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question19 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question20 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question21 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question22 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question23 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question24 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question25 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question26 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question27 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3, 4, 5]) question28 = models.IntegerField(widget=widgets.RadioSelect, choices=[1, 2, 3]) # PAGES class Instructions(Page): form_model = 'player' class Sliders(Page): timeout_seconds = 120 form_model = 'player' form_fields = enumerate_sliders(100) @staticmethod def before_next_page(player: Player, timeout_happened): player.payoff += check_sliders([player.slider1, player.slider2, player.slider3, player.slider4, player.slider5, player.slider6, player.slider7, player.slider8, player.slider9, player.slider10, player.slider11, player.slider12, player.slider13, player.slider14, player.slider15, player.slider16, player.slider17, player.slider18, player.slider19, player.slider20, player.slider21, player.slider22, player.slider23, player.slider24, player.slider25, player.slider26, player.slider27, player.slider28, player.slider29, player.slider30, player.slider31, player.slider32, player.slider33, player.slider34, player.slider35, player.slider36, player.slider37, player.slider38, player.slider39, player.slider40, player.slider41, player.slider42, player.slider43, player.slider44, player.slider45, player.slider46, player.slider47, player.slider48, player.slider49, player.slider50, player.slider51, player.slider52, player.slider53, player.slider54, player.slider55, player.slider56, player.slider57, player.slider58, player.slider59, player.slider60, player.slider61, player.slider62, player.slider63, player.slider64, player.slider65, player.slider66, player.slider67, player.slider68, player.slider69, player.slider70, player.slider71, player.slider72, player.slider73, player.slider74, player.slider75, player.slider76, player.slider77, player.slider78, player.slider79, player.slider80, player.slider81, player.slider82, player.slider83, player.slider84, player.slider85, player.slider86, player.slider87, player.slider88, player.slider89, player.slider90, player.slider91, player.slider92, player.slider93, player.slider94, player.slider95, player.slider96, player.slider97, player.slider98, player.slider99, player.slider100]) class Other_Questions1(Page): form_model = 'player' form_fields = ['question1', 'question2', 'question3', 'question4', 'question5'] class Other_Questions2(Page): form_model = 'player' form_fields = ['question6', 'question7', 'question8'] class Other_Questions3(Page): form_model = 'player' form_fields = ['question9', 'question10'] class Other_Questions4A(Page): form_model = 'player' form_fields = ['question11', 'question12', 'question13', 'question14'] @staticmethod def is_displayed(player: Player): return player.long_term_first class Other_Questions4B(Page): form_model = 'player' form_fields = ['question15', 'question16', 'question17'] @staticmethod def is_displayed(player: Player): return not player.long_term_first class Other_Questions5A(Page): form_model = 'player' form_fields = ['question15', 'question16', 'question17'] @staticmethod def is_displayed(player: Player): return player.long_term_first class Other_Questions5B(Page): form_model = 'player' form_fields = ['question11', 'question12', 'question13', 'question14'] @staticmethod def is_displayed(player: Player): return not player.long_term_first class Other_Questions6(Page): form_model = 'player' form_fields = ['question18', 'question19', 'question20'] class Other_Questions7(Page): form_model = 'player' form_fields = ['question21', 'question22', 'question23', 'question24'] class Other_Questions8(Page): form_model = 'player' form_fields = ['question25', 'question26', 'question27', 'question28'] @staticmethod def before_next_page(player: Player, timeout_happened): player.participant.finished = True class Results(Page): form_model = 'player' page_sequence = [Instructions, Other_Questions1, Other_Questions2, Other_Questions3, Other_Questions4A, Other_Questions4B, Other_Questions5A, Other_Questions5B, Other_Questions6, Other_Questions7, Other_Questions8, Results]