from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class P01_Welcome(Page): def is_displayed(self): return self.round_number == 1 class P02_T1_Inst(Page): def before_next_page(self): self.group.set_roles() def is_displayed(self): return self.round_number == 1 class P03_T1_Inst1(Page): def is_displayed(self): return self.round_number == 1 class P04_T1_Inst2(Page): def is_displayed(self): return self.round_number == 1 class P05_T1_Inst3(Page): def is_displayed(self): return self.round_number == 1 class P07_T1_Control(Page): form_model = 'player' form_fields = ["control1", "control3", "control4", "control5", "control6"] def is_displayed(self): return self.round_number == 1 class P09_T1_Role(Page): def is_displayed(self): return self.round_number == 1 class W03_T1_ShuffleWait(WaitPage): wait_for_all_groups = True def after_all_players_arrive(self): self.subsession.group_randomly(fixed_id_in_group=True) def is_displayed(self): return self.round_number >= 2 class W04_T1_GroupWait(WaitPage): def after_all_players_arrive(self): self.group.T2_offer() class P17_T1_Buyer(Page): form_model = 'player' form_fields = ["buyer_choice"] def vars_for_template(self): product1 = self.group.get_player_by_id(1).T2_product1 product2 = self.group.get_player_by_id(1).T2_product2 price1 = self.group.get_player_by_id(1).T2_price1 price2 = self.group.get_player_by_id(1).T2_price2 period = self.round_number return dict( product1=product1, product2=product2, price1=price1, price2=price2, period=period ) def is_displayed(self): return self.player.type == "buyer" class W06_T2_PayoffWait(WaitPage): def after_all_players_arrive(self): self.group.T2_payoff_calc() class P19_T1_Feedback(Page): def vars_for_template(self): buyer_choice = self.group.get_player_by_id(1).buyer_choice buyer = self.group.get_player_by_id(1).T2_payoff TC = self.group.get_player_by_id(2).T2_payoff product1 = self.group.get_player_by_id(1).T2_product1 product2 = self.group.get_player_by_id(1).T2_product2 price1 = self.group.get_player_by_id(1).T2_price1 price2 = self.group.get_player_by_id(1).T2_price2 period = self.round_number return dict( buyer_choice=buyer_choice, buyer=buyer, TC=TC, product1=product1, product2=product2, price1=price1, price2=price2, period=period ) class P20_T2_Intro(Page): def is_displayed(self): return self.round_number == Constants.num_rounds class P21_T2_Q1(Page): form_model = 'player' form_fields = ['age', 'sex', 'experience', 'studies', 'semester'] def is_displayed(self): return self.round_number == Constants.num_rounds class P22_T2_Q2(Page): form_model = 'player' form_fields = ['markets1', 'markets2', 'markets3', 'markets4', 'markets5', 'markets6'] def is_displayed(self): return self.round_number == Constants.num_rounds class P23_T2_Q3B(Page): form_model = 'player' form_fields = ['verstanden', 'quality_check', 'not_harming', 'ownpayoff', 'utilitarian', 'x_tendency_buyer'] def is_displayed(self): return self.round_number == Constants.num_rounds and self.player.type == 'buyer' class P23_T2_Q3C(Page): form_model = 'player' form_fields = ['verstanden', 'quality_check'] def is_displayed(self): return self.round_number == Constants.num_rounds and self.player.type == 'C' class P24_T2_Q4(Page): form_model = 'player' form_fields = ['partei', 'pol_selbstein'] def is_displayed(self): return self.player.round_number == Constants.num_rounds class P25_T2_Q5(Page): form_model = 'player' form_fields = ['allocation1', 'allocation2', 'allocation3', 'allocation4', 'allocation5', 'allocation6'] def is_displayed(self): return self.player.round_number == Constants.num_rounds class W07_T3_ResultsWait(WaitPage): def after_all_players_arrive(self): self.group.set_payoff() def is_displayed(self): return self.round_number == Constants.num_rounds class P26_T3_Results(Page): def vars_for_template(self): buyer_choice = self.group.get_player_by_id(1).in_round(self.group.round_payed).buyer_choice product1 = self.group.get_player_by_id(1).T2_product1 product2 = self.group.get_player_by_id(1).T2_product2 price1 = self.group.get_player_by_id(1).T2_price1 price2 = self.group.get_player_by_id(1).T2_price2 T2_payoff = self.player.in_round(self.group.round_payed).T2_payoff final_payoff = self.player.payoff.to_real_world_currency(self.session) return dict( buyer_choice = buyer_choice, product1=product1, product2=product2, price1=price1, price2=price2, T2_payoff = T2_payoff, final_payoff = final_payoff ) def is_displayed(self): return self.round_number == Constants.num_rounds class P27_T3_Payment(Page): form_model = 'player' form_fields = ['name', 'surname', 'method'] def is_displayed(self): return self.round_number == Constants.num_rounds class P28_T3_PaymentB(Page): form_model = 'player' form_fields = ['IBAN'] def is_displayed(self): return self.player.method == "Banküberweisung" and self.round_number == Constants.num_rounds class P28p_T3_PaymentP(Page): form_model = 'player' form_fields = ['mail'] def is_displayed(self): return self.player.method == "PayPal" and self.round_number == Constants.num_rounds class P29_T3_End(Page): pass def is_displayed(self): return self.round_number == Constants.num_rounds page_sequence = [P01_Welcome, P02_T1_Inst, #P03_T1_Inst1, #P04_T1_Inst2, #P05_T1_Inst3, #P07_T1_Control, P09_T1_Role, W03_T1_ShuffleWait, W04_T1_GroupWait, P17_T1_Buyer, W06_T2_PayoffWait, P19_T1_Feedback, #P20_T2_Intro, #P21_T2_Q1, #P22_T2_Q2, #P23_T2_Q3B, #P23_T2_Q3C, #P24_T2_Q4, #P25_T2_Q5, #W07_T3_ResultsWait, #P26_T3_Results, #P27_T3_Payment, #P28_T3_PaymentB, #P28p_T3_PaymentP, #P29_T3_End ]