from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class SettingGroups(WaitPage): group_by_arrival_time = True def is_displayed(self): return self.round_number == 1 class Introduction(Page): pass class Send(Page): form_model = 'group' form_fields = ['sent_amount'] 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 class SendBackWaitPage(WaitPage): pass class SendBack(Page): """This page is only for P2 P2 sends back some amount (of the tripled amount received) to P1""" form_model = 'group' form_fields = ['sent_back_amount'] 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 def vars_for_template(self): tripled_amount = self.group.sent_amount * Constants.multiplier return dict( tripled_amount=tripled_amount, prompt='0から{}までの値を選んでください。'.format(tripled_amount), ) class ResultsWaitPage(WaitPage): after_all_players_arrive = 'set_payoffs' class Results(Page): """This page displays the earnings of each player""" def vars_for_template(self): return dict(tripled_amount=self.group.sent_amount * Constants.multiplier, round_number=self.round_number, id_in_group=self.player.id_in_group) class Stop(Page): def is_displayed(self): return self.round_number == 4 page_sequence = [ SettingGroups, Introduction, Send, SendBackWaitPage, SendBack, ResultsWaitPage, Results, ]