from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Bekleme(Page): def is_displayed(self): return self.round_number == 1 class Introduction(Page): def is_displayed(self): return self.round_number == 1 timeout_seconds = 300 class Invest(Page): form_model = 'player' form_fields = ['investment'] def vars_for_template(self): if self.round_number == 1 or self.round_number == 11 or self.round_number == 21: self.player.endowment = Constants.endowment else: self.player.endowment = var = self.player.in_round(self.round_number - 1).pyf if self.round_number < 11: self.player.period = 1 self.player.tur = self.round_number if 10 < self.round_number < 21: self.player.period = 2 self.player.tur = self.round_number - 10 if 20 < self.round_number < 31: self.player.period = 3 self.player.tur = self.round_number - 20 if Constants.rounds_to_pay == 10: self.player.blm_to_pay = 1 if Constants.rounds_to_pay == 20: self.player.blm_to_pay = 2 if Constants.rounds_to_pay == 30: self.player.blm_to_pay = 3 def before_next_page(self): self.player.safe_inv() self.player.set_payoffs() if self.round_number == Constants.num_rounds: payoff_list = self.player.participant.vars.get('payoffs', []) # now saving to otree's payoff variable for currency calculations self.player.payoff = self.player.in_round(Constants.rounds_to_pay).pyf print('player payoff:', self.player.payoff) # p.dollars = p.participant.payoff_plus_participation_fee().to_real_world_currency(self.session) self.participant.vars['Risk_1'] = self.player.in_round(10).pyf self.participant.vars['Risk_2'] = self.player.in_round(20).pyf self.participant.vars['Risk_3'] = self.player.in_round(30).pyf self.participant.vars['Risk_payoff'] = self.player.in_round(Constants.rounds_to_pay).pyf self.participant.vars['Risk_paying_round'] = Constants.rounds_to_pay self.participant.vars['blm_to_pay'] = self.player.blm_to_pay class Results(Page): pass page_sequence = [Bekleme, Introduction, Invest, Results]