from otree.api import * doc = """ This is the last experiment for my phd dissertation thesis. This is for the treatment group """ class C(BaseConstants): NAME_IN_URL = 'ChapterThree_TheFinal_Treatment' PLAYERS_PER_GROUP = None NUM_ROUNDS = 30 six_payoff = cu(1) other_payoff = cu(0) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): decision = models.StringField( choices=["one", "two", "three", "four", "five", "six"], doc="Each player's record number is between 1 to 6", widget=widgets.RadioSelect, ) # PAGES class Welcome(Page): def is_displayed(self): return self.round_number == 1 class Introduction(Page): def is_displayed(self): return self.round_number == 1 class Reminder1(Page): def is_displayed(self): return self.round_number == 4 class Reminder2(Page): def is_displayed(self): return self.round_number == 9 class Reminder3(Page): def is_displayed(self): return self.round_number == 14 class Reminder4(Page): def is_displayed(self): return self.round_number == 18 class Reminder5(Page): def is_displayed(self): return self.round_number == 22 class Reminder6(Page): def is_displayed(self): return self.round_number == 26 class Decision(Page): form_model = 'player' form_fields = ['decision'] @staticmethod def before_next_page(player, timeout_happened): import random participant = player.participant # if it's the last round if player.round_number == C.NUM_ROUNDS: random_round = random.randint(1, C.NUM_ROUNDS) participant.selected_round = random_round player_in_selected_round = player.in_round(random_round) if player_in_selected_round.decision == "six": player.payoff = 1 else: player.payoff = 0 class Results(Page): @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS page_sequence = [Welcome, Introduction, Reminder1, Reminder2, Reminder3, Reminder4, Reminder5, Reminder6, Decision, Results]