from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Part2(Page): form_model = 'player' class Period1(Page): form_model = 'player' form_fields = ['p1'] def is_displayed(self): return self.participant.vars['my_round'] == 1 #check #def vars_for_template(self): # return dict(max =self.participant.vars['max_round']) def before_next_page(self): self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.participant.vars['a1'] = (self.player.p1/100) *Constants.endowment*(1+random.choice(Constants.return_A)) self.participant.vars['b1'] = (1-self.player.p1/100)*Constants.endowment*(1+Constants.return_B) self.participant.vars['endowment1'] = self.participant.vars['a1'] + self.participant.vars['b1'] self.player.a1 = self.participant.vars['a1'] self.player.b1 = self.participant.vars['b1'] self.player.endowment1 = self.participant.vars['endowment1'] class Period2(Page): form_model = 'player' form_fields = ['p2'] def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a1'] BB =self.participant.vars['b1'] payoff1 = AA + BB return dict( ra1=AA, rb1=BB, payoff1=payoff1, subround = self.round_number, pround = self.participant.vars['max_round']) def before_next_page(self): self.participant.vars['a2'] = (self.player.p2 /100) *self.participant.vars['endowment1']*(1+random.choice(Constants.return_A)) self.participant.vars['b2'] = (1-self.player.p2/100)*self.participant.vars['endowment1']*(1+Constants.return_B) self.participant.vars['endowment2'] = self.participant.vars['a2'] + self.participant.vars['b2'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a2'] self.player.payoff_b = self.participant.vars['b2'] self.player.a2 = self.participant.vars['a2'] self.player.b2 = self.participant.vars['b2'] self.player.endowment2 = self.participant.vars['endowment2'] class Period3(Page): form_model = 'player' form_fields = ['p3'] def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a2'] BB =self.participant.vars['b2'] payoff2 = AA + BB my_round = self.participant.vars['my_round'] return dict( ra2=AA, rb2=BB, payoff2=payoff2, subround3 = self.participant.vars['my_round'], pround3 = self.participant.vars['max_round'], my_round = my_round ) def before_next_page(self): self.participant.vars['a3'] = (self.player.p3/100)*self.participant.vars['endowment2']*(1+random.choice(Constants.return_A)) self.participant.vars['b3'] = (1-self.player.p3/100)*self.participant.vars['endowment2']*(1+Constants.return_B) self.participant.vars['endowment3'] = self.participant.vars['a3'] + self.participant.vars['b3'] self.participant.vars['my_round'] = self.participant.vars['my_round'] +1 self.player.payoff_a = self.participant.vars['a3'] self.player.payoff_b = self.participant.vars['b3'] self.player.a3 = self.participant.vars['a3'] self.player.b3 = self.participant.vars['b3'] self.player.endowment3 = self.participant.vars['endowment3'] class Period4(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a3'] BB =self.participant.vars['b3'] payoff3 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra3 =AA, rb3 =BB, payoff3 = payoff3, my_round = my_round) def before_next_page(self): self.participant.vars['a4'] = (self.player.p4/100)*self.participant.vars['endowment3']*(1+random.choice(Constants.return_A)) self.participant.vars['b4'] = (1-self.player.p4/100)*self.participant.vars['endowment3']*(1+Constants.return_B) self.participant.vars['endowment4'] = self.participant.vars['a4'] + self.participant.vars['b4'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a4'] self.player.payoff_b = self.participant.vars['b4'] self.player.a4 = self.participant.vars['a4'] self.player.b4 = self.participant.vars['b4'] self.player.endowment4 = self.participant.vars['endowment4'] form_model = 'player' form_fields = ['p4'] class Period5(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a4'] BB =self.participant.vars['b4'] payoff4 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra4 =AA, rb4 =BB, payoff4 = payoff4, my_round = my_round) def before_next_page(self): self.participant.vars['a5'] = (self.player.p5/100)*self.participant.vars['endowment4']*(1+random.choice(Constants.return_A)) self.participant.vars['b5'] = (1-self.player.p5/100)*self.participant.vars['endowment4']*(1+Constants.return_B) self.participant.vars['endowment5'] = self.participant.vars['a5'] + self.participant.vars['b5'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a5'] self.player.payoff_b = self.participant.vars['b5'] self.player.a5 = self.participant.vars['a5'] self.player.b5 = self.participant.vars['b5'] self.player.endowment5 = self.participant.vars['endowment5'] form_model = 'player' form_fields = ['p5'] class Period6(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a5'] BB =self.participant.vars['b5'] payoff5 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra5 =AA, rb5 =BB, payoff5 = payoff5, my_round = my_round) def before_next_page(self): self.participant.vars['a6'] = (self.player.p6/100)*self.participant.vars['endowment5']*(1+random.choice(Constants.return_A)) self.participant.vars['b6'] = (1-self.player.p6/100)*self.participant.vars['endowment5']*(1+Constants.return_B) self.participant.vars['endowment6'] = self.participant.vars['a6'] + self.participant.vars['b6'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a6'] self.player.payoff_b = self.participant.vars['b6'] self.player.a6 = self.participant.vars['a6'] self.player.b6 = self.participant.vars['b6'] self.player.endowment6 = self.participant.vars['endowment6'] form_model = 'player' form_fields = ['p6'] class Period7(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a6'] BB =self.participant.vars['b6'] payoff6 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra6 =AA, rb6 =BB, payoff6 = payoff6, my_round = my_round) def before_next_page(self): self.participant.vars['a7'] = (self.player.p7/100)*self.participant.vars['endowment6']*(1+random.choice(Constants.return_A)) self.participant.vars['b7'] = (1-self.player.p7/100)*self.participant.vars['endowment6']*(1+Constants.return_B) self.participant.vars['endowment7'] = self.participant.vars['a7'] + self.participant.vars['b7'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a7'] self.player.payoff_b = self.participant.vars['b7'] self.player.a7 = self.participant.vars['a7'] self.player.b7 = self.participant.vars['b7'] self.player.endowment7 = self.participant.vars['endowment7'] form_model = 'player' form_fields = ['p7'] class Period8(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a7'] BB =self.participant.vars['b7'] payoff7 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra7 =AA, rb7 =BB, payoff7 = payoff7, my_round = my_round) def before_next_page(self): self.participant.vars['a8'] = (self.player.p8/100)*self.participant.vars['endowment7']*(1+random.choice(Constants.return_A)) self.participant.vars['b8'] = (1-self.player.p8/100)*self.participant.vars['endowment7']*(1+Constants.return_B) self.participant.vars['endowment8'] = self.participant.vars['a8'] + self.participant.vars['b8'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a8'] self.player.payoff_b = self.participant.vars['b8'] self.player.a8 = self.participant.vars['a8'] self.player.b8 = self.participant.vars['b8'] self.player.endowment8 = self.participant.vars['endowment8'] form_model = 'player' form_fields = ['p8'] class Period9(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a8'] BB =self.participant.vars['b8'] payoff8 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra8 =AA, rb8 =BB, payoff8 = payoff8, my_round = my_round) def before_next_page(self): self.participant.vars['a9'] = (self.player.p9/100)*self.participant.vars['endowment8']*(1+random.choice(Constants.return_A)) self.participant.vars['b9'] = (1-self.player.p9/100)*self.participant.vars['endowment8']*(1+Constants.return_B) self.participant.vars['endowment9'] = self.participant.vars['a9'] + self.participant.vars['b9'] self.participant.vars['my_round'] = self.participant.vars['my_round'] + 1 self.player.payoff_a = self.participant.vars['a9'] self.player.payoff_b = self.participant.vars['b9'] self.player.a9 = self.participant.vars['a9'] self.player.b9 = self.participant.vars['b9'] self.player.endowment9 = self.participant.vars['endowment9'] form_model = 'player' form_fields = ['p9'] class Period10(Page): def is_displayed(self): return self.participant.vars['my_round'] < self.participant.vars['max_round'] def vars_for_template(self): AA =self.participant.vars['a9'] BB =self.participant.vars['b9'] payoff9 = AA+BB my_round = self.participant.vars['my_round'] return dict( ra9 =AA, rb9 =BB, payoff9 = payoff9, my_round = my_round) def before_next_page(self): self.participant.vars['a10'] = (self.player.p10/100)*self.participant.vars['endowment9']*(1+random.choice(Constants.return_A)) self.participant.vars['b10'] = (1-self.player.p10/100)*self.participant.vars['endowment9']*(1+Constants.return_B) self.participant.vars['endowment10'] = self.participant.vars['a10'] + self.participant.vars['b10'] self.player.payoff_a = self.participant.vars['a10'] self.player.payoff_b = self.participant.vars['b10'] self.player.a10 = self.participant.vars['a10'] self.player.b10 = self.participant.vars['b10'] self.player.endowment10 = self.participant.vars['endowment10'] form_model = 'player' form_fields = ['p10'] class Ending(Page): def is_displyaed(self): return self.round_number == self.participant.vars['max_round'] def vars_for_template(self): AA = self.player.payoff_a BB = self.player.payoff_b payoff_end = AA+BB my_round = self.participant.vars['my_round'] self.player.a_aftertax = AA*(1-Constants.tax_A) self.player.b_aftertax = BB*(1-Constants.tax_B) self.player.all_aftertax = self.player.a_aftertax + self.player.b_aftertax return dict( period = self.participant.vars['my_round'], return_A =AA, return_B =BB, payoff = payoff_end, aftertax = self.player.all_aftertax, my_round = my_round ) def before_next_page(self): self.participant.vars['total_assets'] = self.player.payoff_a + self.player.payoff_b self.participant.vars['aftertax_a'] = self.player.a_aftertax self.participant.vars['aftertax_b'] = self.player.b_aftertax self.participant.vars['aftertax_all'] = self.player.all_aftertax form_model = 'player' page_sequence =[Part2, Period1, Period2, Period3, Period4, Period5,Period6,Period7,Period8,Period9,Period10,Ending]