from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class SettingGroups(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'setting_groups' class Introduction1(Page): timeout_seconds = 10 def vars_for_template(self): return dict(round_number=self.round_number, id_in_group=self.player.id_in_group) class Send1(Page): timeout_seconds = 20 form_model = 'group' form_fields = ['sent_amount1'] def is_displayed(self): if self.round_number == 1: return self.player.id_in_group == 1 if self.round_number == 2: return self.player.id_in_group == 2 if self.round_number == 3: return self.player.id_in_group == 1 if self.round_number == 4: return self.player.id_in_group == 2 if self.round_number == 5: return self.player.id_in_group == 1 if self.round_number == 6: return self.player.id_in_group == 2 def before_next_page(self): if self.timeout_happened: self.player.to1_1 = True class SendBackWaitPage1(WaitPage): pass class SendBack1(Page): timeout_seconds = 20 form_model = 'group' form_fields = ['sent_back_amount1'] def is_displayed(self): if self.round_number == 1: return self.player.id_in_group == 2 if self.round_number == 2: return self.player.id_in_group == 1 if self.round_number == 3: return self.player.id_in_group == 2 if self.round_number == 4: return self.player.id_in_group == 1 if self.round_number == 5: return self.player.id_in_group == 2 if self.round_number == 6: return self.player.id_in_group == 1 def vars_for_template(self): tripled_amount1 = self.group.sent_amount1 * Constants.multiplier return dict( tripled_amount1=tripled_amount1, prompt='0から{}までの値を選んでください。'.format(tripled_amount1), ) def before_next_page(self): if self.timeout_happened: self.player.to1_2 = True class ResultsWaitPage1(WaitPage): after_all_players_arrive = 'set_payoffs1' class Results1(Page): timeout_seconds = 10 def vars_for_template(self): return dict(tripled_amount1=self.group.sent_amount1 * Constants.multiplier, round_number=self.round_number, id_in_group=self.player.id_in_group) class Introduction2(Page): timeout_seconds = 10 def vars_for_template(self): return dict(round_number=self.round_number, id_in_group=self.player.id_in_group) class Send2(Page): timeout_seconds = 20 form_model = 'group' form_fields = ['sent_amount2'] def is_displayed(self): if self.round_number == 1: return self.player.id_in_group == 2 if self.round_number == 2: return self.player.id_in_group == 1 if self.round_number == 3: return self.player.id_in_group == 2 if self.round_number == 4: return self.player.id_in_group == 1 if self.round_number == 5: return self.player.id_in_group == 2 if self.round_number == 6: return self.player.id_in_group == 1 def before_next_page(self): if self.timeout_happened: self.player.to2_1 = True class SendBackWaitPage2(WaitPage): pass class SendBack2(Page): timeout_seconds = 20 form_model = 'group' form_fields = ['sent_back_amount2'] def is_displayed(self): if self.round_number == 1: return self.player.id_in_group == 1 if self.round_number == 2: return self.player.id_in_group == 2 if self.round_number == 3: return self.player.id_in_group == 1 if self.round_number == 4: return self.player.id_in_group == 2 if self.round_number == 5: return self.player.id_in_group == 1 if self.round_number == 6: return self.player.id_in_group == 2 def vars_for_template(self): tripled_amount2 = self.group.sent_amount2 * Constants.multiplier return dict( tripled_amount2=tripled_amount2, prompt='0から{}までの値を選んでください。'.format(tripled_amount2), ) def before_next_page(self): if self.timeout_happened: self.player.to2_2 = True class ResultsWaitPage2(WaitPage): after_all_players_arrive = 'set_payoffs2' class Results2(Page): timeout_seconds = 10 """This page displays the earnings of each player""" def vars_for_template(self): return dict(tripled_amount2=self.group.sent_amount2 * Constants.multiplier, round_number=self.round_number, id_in_group=self.player.id_in_group) page_sequence = [ SettingGroups, Introduction1, Send1, SendBackWaitPage1, SendBack1, ResultsWaitPage1, Results1, Introduction2, Send2, SendBackWaitPage2, SendBack2, ResultsWaitPage2, Results2, ]