from otree.api import * import time, random doc = """ He and Wu(2016) 'Choice set, relative income, and inequity aversion: An experimental investigation' Journal of Economic Psychology DOI: 10.1016/j.joep.2016.04.002 """ class C(BaseConstants): NAME_IN_URL = 'survey_inequity_aversion' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): for p in subsession.get_players(): p.is_alphaFirst = random.choice([0, 1]) class Group(BaseGroup): pass class Player(BasePlayer): alpha_TakeL_UpTo = models.IntegerField() beta_TakeL_UpTo = models.IntegerField() is_alphaFirst = models.IntegerField() time_stamp_alpha = models.FloatField(blank=True) time_stamp_beta = models.FloatField(blank=True) # PAGES class Beta(Page): form_model = "player" form_fields = ["beta_TakeL_UpTo"] def vars_for_template(player: Player): return { "optL": [844, 832, 820, 808, 796, 784, 772, 760, 748, 736, 724, 712, 700, 688, 676, 664, 652, 640, 628, 616, 604, 592, 580, 568, 546, 520, 488, 448, 395, 322, 216] , } @staticmethod def before_next_page(player, timeout_happened): player.time_stamp_beta = time.time() class Alpha(Page): form_model = "player" form_fields = ["alpha_TakeL_UpTo"] def vars_for_template(player: Player): return { "optL": list(range(450, -15, -15)), } @staticmethod def before_next_page(player, timeout_happened): player.time_stamp_alpha = time.time() @staticmethod def is_displayed(player): return player.is_alphaFirst == 1 class Alpha2(Alpha): template_name = 'survey_inequity_aversion/Alpha.html' @staticmethod def is_displayed(player): return player.is_alphaFirst != 1 page_sequence = [Alpha, Beta, Alpha2]