from otree.api import * import random, time doc = """ Kerschbamer(2015) 'The geometry of distributional prefer- ences and a non-parametric identification approach: the equality equivalence test' European Economic Review https://doi.org/10.1016/j.euroecorev.2015.01.008 """ class C(BaseConstants): NAME_IN_URL = 'survey_social_preference' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): for p in subsession.get_players(): p.is_FavFirst = random.choice([0, 1]) class Group(BaseGroup): pass class Player(BasePlayer): unfav_TakeL_UpTo = models.IntegerField() fav_TakeL_UpTo = models.IntegerField() is_FavFirst = models.IntegerField() time_stamp_unfav = models.FloatField(blank=True) time_stamp_fav = models.FloatField(blank=True) # PAGES class Unfavorable(Page): form_model = "player" form_fields = ["unfav_TakeL_UpTo"] def vars_for_template(player: Player): return { "optR": [800, 900, 1000, 1100, 1200], } @staticmethod def before_next_page(player, timeout_happened): player.time_stamp_unfav = time.time() class Favorable(Page): form_model = "player" form_fields = ["fav_TakeL_UpTo"] def vars_for_template(player: Player): return { "optR": [800, 900, 1000, 1100, 1200], } @staticmethod def before_next_page(player, timeout_happened): player.time_stamp_fav = time.time() @staticmethod def is_displayed(player): return player.is_FavFirst == 1 class Favorable2(Favorable): template_name = 'survey_social_preference/Favorable.html' @staticmethod def is_displayed(player): return player.is_FavFirst != 1 page_sequence = [Favorable, Unfavorable, Favorable2]