from otree.api import * import random doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'last_page' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): tot_wait_time = models.FloatField(initial=0) tot_payoff = models.CurrencyField(initial=0) rand_round = models.IntegerField(initial=0) rand_payoff = models.CurrencyField(initial=0) # PAGES class RandPage(Page): @staticmethod def is_displayed(player: Player): # This is for random round payoffs) player.participant.payoff = 0 round_payoffs = player.participant.round_payoff n_rounds = len(round_payoffs) print("n_rounds: ", n_rounds) rand_round = random.randint(0, n_rounds-1) player.rand_round = rand_round print("rand_round: ", rand_round) player.rand_payoff = round_payoffs[rand_round] print(player.session.config) player.participant.payoff = player.rand_payoff + player.session.config['endowment'] print("player.participant.payoff: ", player.participant.payoff) player.tot_payoff=player.participant.payoff player.tot_wait_time = round(player.participant.vars['tot_wait_time']) if player.tot_wait_time < player.session.config['expected_wait_time']: player.payoff = 0 else: player.payoff = (player.tot_wait_time - player.session.config['expected_wait_time'])*player.session.config['waittime_wage']/(60*60) * 1/player.session.config['real_world_currency_per_point'] return False class LastPage(Page): @staticmethod def vars_for_template(player: Player): return dict( tot_wait_time=player.tot_wait_time, waittime_wage=player.payoff.to_real_world_currency(player.session), additional_wait = player.tot_wait_time - player.session.config['expected_wait_time'], tot_payoff = player.tot_payoff, endowment = player.session.config['endowment'], tot_gbp = player.tot_payoff.to_real_world_currency(player.session), tot_inc_wait = player.participant.payoff, tot_inc_wage_gbp = player.participant.payoff.to_real_world_currency(player.session), rand_round_string = player.rand_round + 1, ) page_sequence = [RandPage, LastPage]