from otree.api import * from otree.models import participant doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'Instructions' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 REVIEW_VARIABLES = 'instructions/reviewvariables.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): prolificid = models.StringField(label='Please enter your correct Prolific ID:', default=str(" ")) prolific_id = models.StringField flatpayment = models.CurrencyField(initial=2) profit5 = models.CurrencyField(initial=5) profit4 = models.CurrencyField(initial=4) profit3 = models.CurrencyField(initial=3) profit2 = models.CurrencyField(initial=2) profit1 = models.CurrencyField(initial=1) profit0 = models.CurrencyField(initial=0) # PAGES class generalinfo0(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class generalinfo1(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class ask_prolificID(Page): form_model = 'player' form_fields = ['prolificid'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class instructions1(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def before_next_page(self, timeout_happened): self.prolific_id = self.participant.label # self.participant.vars['prolific_PID'] = self.participant.label class instructions2(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class instructions3(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 class instructionspayment(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): return player.round_number == 1 page_sequence = [generalinfo0, generalinfo1, ask_prolificID, instructions1, instructions2, instructions3, instructionspayment]