from otree.api import * doc = """ Your app description """ def likert_7(label): return models.IntegerField( choices=[ [1, ''], [2, ''], [3, ''], [4, ''], [5, ''], [6, ''], [7, ''], ], label=label, widget=widgets.RadioSelect ) class C(BaseConstants): NAME_IN_URL = 'end' PLAYERS_PER_GROUP = 6 NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): pennies_earned = models.IntegerField() g_id = models.IntegerField() mpq1 = likert_7('sharing advice with peers hurts promotion') mpq2 = likert_7('sharing advice with peers increase pay') mpq3 = likert_7('sharing advice with other managers reduce status') mpq4 = likert_7('sharing advice with employees reduce status') mpq5 = likert_7('wanted the promotion to senior manager') mpq6 = likert_7('unsure what advice is helpful') mpq7 = likert_7('worried whether advice for employees would be helpful') mpq8 = likert_7('worried whether advice for employees well received') mpq9 = likert_7('worried whether advice for managers would be helpful') mpq10 = likert_7('worried whether advice for managers well received') gpq1 = likert_7('deserve promotion') gpq2 = likert_7('enjoy math') gpq3 = likert_7('good at math') gpq4 = likert_7('enjoy English') gpq5 = likert_7('good at English') gpq6 = likert_7('word games') receiving_open = models.LongStringField(initial="", label="If advice was shared with you, how did you decide how" " much advice to accept or whether to accept any at all?") banner_1 = models.StringField(label='Please input your 9-digit Banner ID number (e.g., 123454321)') banner_2 = models.StringField(label='Please re-input your 9-digit Banner ID number (e.g., 123454321)') professor = models.StringField( choices=['Dr. Andrew McClelland', 'Prof. Chloe Barger'], widget=widgets.RadioSelect, label='Who is your accounting professor offering extra credit for this study?', initial='filler') # DEMOGRAPHIC QUESTIONS dem_gender = models.IntegerField( label='What is your gender?', choices=[ [1, 'Male'], [2, 'Female'], [3, 'Other'], [4, 'Prefer not to say'] ], widget=widgets.RadioSelect() ) dem_age = models.IntegerField( label='What is your age in years?', ) dem_major = models.StringField( label='What is your major?', ) dem_year = models.IntegerField( label='What is your year in school?', choices=[ [1, 'Freshman'], [2, 'Sophomore'], [3, 'Junior'], [4, 'Senior'], [5, 'Graduate'], [6, 'Other'] ] ) dem_work = models.IntegerField( label='How many months of work experience do you have?', ) dem_lang = models.StringField( label='What is your first language?', ) # PAGES class peq_m(Page): form_model = 'player' form_fields = ['mpq1', 'mpq2', 'mpq3', 'mpq4', 'mpq5', 'mpq6', 'mpq7', 'mpq8', 'mpq9', 'mpq10'] @staticmethod def is_displayed(player): return player.participant.vars['is_promoted'] class peq_g(Page): form_model = 'player' form_fields = ['gpq1', 'gpq2', 'gpq3', 'gpq4', 'gpq5', 'gpq6', 'receiving_open'] class dem(Page): form_model = 'player' form_fields = ['dem_gender', 'dem_age', 'dem_major', 'dem_year', 'dem_work', 'dem_lang'] @staticmethod def before_next_page(player, timeout_happened): player.pennies_earned = player.participant.vars['pennies_earned'] player.g_id = player.participant.vars['g_id'] class banner(Page): form_model = 'player' form_fields = ['professor', 'banner_1', 'banner_2'] @staticmethod def error_message(player, values): if values['banner_1'] != values['banner_2']: return 'Banner IDs must match to proceed.' class ty(Page): @staticmethod def vars_for_template(player): return dict( pay=player.pennies_earned/100, ) page_sequence = [peq_m, peq_g, dem, banner, ty]