from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage, SurveyPage from .models import Constants class Introduction(Page): def vars_for_template(self): partner = self.player.get_others_in_group()[0] return { 'round_number': '{}' .format(self.round_number) } class instructions(Page): def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['accept'] class ShuffleWaitPage(WaitPage): pass class SendBackWaitPage(WaitPage): pass class P8(Page): """This page is only for P1 P1 sends amount (all, some, or none) to P2 """ form_model = 'group' form_fields = ['sent_8'] def is_displayed(self): return self.player.rol == 'P8' def vars_for_template(self): partner = self.player.get_others_in_group()[0] return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2, 'p2_receiver': Constants.endowment_Receiver + self.group.sent_3, 'p3_decider': Constants.endowment_Decider - self.group.sent_3, 'p3_receiver': Constants.endowment_Receiver + self.group.sent_4, 'p4_decider': Constants.endowment_Decider - self.group.sent_4, 'p4_receiver': Constants.endowment_Receiver + self.group.sent_5, 'p5_decider': Constants.endowment_Decider - self.group.sent_5, 'p5_receiver': Constants.endowment_Receiver + self.group.sent_6, 'p6_decider': Constants.endowment_Decider - self.group.sent_6, 'p6_receiver': Constants.endowment_Receiver + self.group.sent_7, 'p7_decider': Constants.endowment_Decider - self.group.sent_7 } class P7(Page): """This page is only for P7""" form_model = 'group' form_fields = ['sent_7' , 'expect_7'] def is_displayed(self): return self.player.rol == 'P7' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2, 'p2_receiver': Constants.endowment_Receiver + self.group.sent_3, 'p3_decider': Constants.endowment_Decider - self.group.sent_3, 'p3_receiver': Constants.endowment_Receiver + self.group.sent_4, 'p4_decider': Constants.endowment_Decider - self.group.sent_4, 'p4_receiver': Constants.endowment_Receiver + self.group.sent_5, 'p5_decider': Constants.endowment_Decider - self.group.sent_5, 'p5_receiver': Constants.endowment_Receiver + self.group.sent_6, 'p6_decider': Constants.endowment_Decider - self.group.sent_6 } class P6(Page): """This page is only for P6""" form_model = 'group' form_fields = ['sent_6' , 'expect_6'] def is_displayed(self): return self.player.rol == 'P6' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2, 'p2_receiver': Constants.endowment_Receiver + self.group.sent_3, 'p3_decider': Constants.endowment_Decider - self.group.sent_3, 'p3_receiver': Constants.endowment_Receiver + self.group.sent_4, 'p4_decider': Constants.endowment_Decider - self.group.sent_4, 'p4_receiver': Constants.endowment_Receiver + self.group.sent_5, 'p5_decider': Constants.endowment_Decider - self.group.sent_5 } class P5(Page): """This page is only for P7""" form_model = 'group' form_fields = ['sent_5' , 'expect_5'] def is_displayed(self): return self.player.rol == 'P5' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2, 'p2_receiver': Constants.endowment_Receiver + self.group.sent_3, 'p3_decider': Constants.endowment_Decider - self.group.sent_3, 'p3_receiver': Constants.endowment_Receiver + self.group.sent_4, 'p4_decider': Constants.endowment_Decider - self.group.sent_4 } class P4(Page): """This page is only for P4""" form_model = 'group' form_fields = ['sent_4', 'expect_4'] def is_displayed(self): return self.player.rol == 'P4' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2, 'p2_receiver': Constants.endowment_Receiver + self.group.sent_3, 'p3_decider': Constants.endowment_Decider - self.group.sent_3 } class P3(Page): """This page is only for P3""" form_model = 'group' form_fields = ['sent_3' , 'expect_3' ] def is_displayed(self): return self.player.rol == 'P3' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2), 'p1_receiver': Constants.endowment_Receiver + self.group.sent_2, 'p2_decider': Constants.endowment_Decider - self.group.sent_2 } class P2(Page): """This page is only for P2""" form_model = 'group' form_fields = ['sent_2' , 'expect_2' ] def is_displayed(self): return self.player.rol == 'P2' def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number), 'prompt': '0 ile {} arasında bir sayı giriniz.'.format(Constants.endowment_Decider-2) } class P1(Page): """This page is only for P1""" def vars_for_template(self): return { 'round_number': '{}' .format(self.round_number) } def is_displayed(self): return self.player.rol == 'P1' class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() class Results(Page): """This page displays the earnings of each player""" def vars_for_template(self): p2_transfer = self.group.sent_2 p3_transfer = self.group.sent_3 p4_transfer = self.group.sent_4 p5_transfer = self.group.sent_5 p6_transfer = self.group.sent_6 p7_transfer = self.group.sent_7 p8_transfer = self.group.sent_8 average_transfer = (self.group.sent_2+\ self.group.sent_3+self.group.sent_4+self.group.sent_5+self.group.sent_6+self.group.sent_7+self.group.sent_8)/7 p1_receiver = Constants.endowment_Receiver + self.group.sent_2 p2_decider = Constants.endowment_Decider - self.group.sent_2 p2_receiver = Constants.endowment_Receiver + self.group.sent_3 p3_decider = Constants.endowment_Decider - self.group.sent_3 p3_receiver = Constants.endowment_Receiver + self.group.sent_4 p4_decider = Constants.endowment_Decider - self.group.sent_4 p4_receiver = Constants.endowment_Receiver + self.group.sent_5 p5_decider = Constants.endowment_Decider - self.group.sent_5 p5_receiver = Constants.endowment_Receiver + self.group.sent_6 p6_decider = Constants.endowment_Decider - self.group.sent_6 p6_receiver = Constants.endowment_Receiver + self.group.sent_7 p7_decider = Constants.endowment_Decider - self.group.sent_7 p7_receiver = Constants.endowment_Receiver + self.group.sent_8 p8_decider = Constants.endowment_Decider - self.group.sent_8 p8_receiver = Constants.endowment_Receiver + (self.group.sent_2+\ self.group.sent_3+self.group.sent_4+self.group.sent_5+self.group.sent_6+self.group.sent_7+self.group.sent_8)/7 p1_payoff = 2 * p1_receiver p2_payoff = p2_decider * p2_receiver p3_payoff = p3_decider * p3_receiver p4_payoff = p4_decider * p4_receiver p5_payoff = p5_decider * p5_receiver p6_payoff = p6_decider * p6_receiver p7_payoff = p7_decider * p7_receiver p8_payoff = p8_decider * (p1_receiver+p2_receiver+p3_receiver+p4_receiver+p5_receiver+p6_receiver+p7_receiver)/7 return { 'p2_transfer':p2_transfer, 'p3_transfer':p3_transfer, 'p4_transfer':p4_transfer, 'p5_transfer':p5_transfer, 'p6_transfer':p6_transfer, 'p7_transfer':p7_transfer, 'p8_transfer':p8_transfer, 'average_transfer':average_transfer, 'p1_receiver':p1_receiver, 'p2_decider':p2_decider, 'p2_receiver':p2_receiver, 'p3_decider':p3_decider, 'p3_receiver':p3_receiver, 'p4_decider':p4_decider, 'p4_receiver':p4_receiver, 'p5_decider':p5_decider, 'p5_receiver':p5_receiver, 'p6_decider':p6_decider, 'p6_receiver':p6_receiver, 'p7_decider':p7_decider, 'p7_receiver':p7_receiver, 'p8_decider':p8_decider, 'p8_receiver':p8_receiver, 'p1_payoff':p1_payoff, 'p2_payoff':p2_payoff, 'p3_payoff':p3_payoff, 'p4_payoff':p4_payoff, 'p5_payoff':p5_payoff, 'p6_payoff':p6_payoff, 'p7_payoff':p7_payoff, 'p8_payoff':p8_payoff } class OverallResults(Page): """This page displays the earnings of each player""" def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): cumulative_payoff = sum([p.payoff for p in self.player.in_all_rounds()]) return { 'overall_earnings': cumulative_payoff } class Survey(SurveyPage): """This page displays the questionnaire for each player""" def is_displayed(self): return self.round_number == Constants.num_rounds form_model = 'player' form_fields = ['dep','edu','age','gen','inc', 'h_inc', 'investment_options_1', 'investment_options_2', 'investment_options_3', 'investment_options_4', 'investment_options_5', 'investment_options_6', 'investment_options_7', 'investment_options_8', 'investment_options_9', 'investment_options_10', 'env_cons_2', 'env_cons_3', 'env_cons_5', 'env_cons_6', 'env_cons_7', 'env_cons_9', 'fate', 'believe', 'gpa' ] page_sequence = [ instructions, Introduction, P1, SendBackWaitPage, P2, SendBackWaitPage, P3, SendBackWaitPage, P4, SendBackWaitPage, P5, SendBackWaitPage, P6, SendBackWaitPage, P7, SendBackWaitPage, P8, ResultsWaitPage, Results, Survey, OverallResults ]