from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Introduction(Page): def is_displayed(self): return self.round_number == 1 class ParticipantsWaitPage(WaitPage): wait_for_all_groups = False body_text = "相手が準備中です。相手の準備ができ次第、すぐに次の画面に切り替わります。" class Matched(Page): def is_displayed(self): return self.round_number == 1 timeout_seconds = 120 class Decision_p1(Page): def is_displayed(self): return self.player.id_in_group == 1 def vars_for_template(self): return dict( round_number=self.round_number ) form_model = 'group' form_fields = ['p1_volunteer'] timeout_seconds = 90 def before_next_page(self): if self.timeout_happened: self.player.skip = True self.group.p1_volunteer = 'False' class Decisionp2WaitPage(WaitPage): body_text = "このラウンドで「レバーを引く」か「レバーを引かない」かを相手が選択しています。相手の選択が終わり次第、すぐに次の画面に切り替わります。" class Decision_p2(Page): def is_displayed(self): return self.player.id_in_group == 2 def vars_for_template(self): return dict( round_number=self.round_number ) form_model = 'group' form_fields = ['p2_volunteer'] timeout_seconds = 90 def before_next_page(self): if self.timeout_happened: self.player.skip = True self.group.p2_volunteer = 'False' class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() self.group.set_totalpayoffs() body_text = "このラウンドで「レバーを引く」か「レバーを引かない」かを相手が選択しています。相手の選択が終わり次第、すぐに次の画面に切り替わります。" class Results(Page): def vars_for_template(self): me = self.player me.totalpayoff = sum([me.payoff for me in me.in_all_rounds()]) return dict( round_number=self.round_number, payoff=me.payoff, totalpayoff=me.totalpayoff ) timeout_seconds = 60 class Survey(Page): def is_displayed(self): return self.round_number == 24 form_model = 'player' form_fields = ['satisfaction_y', 'ideal_ya', 'ideal_yb', 'satisfaction_p', 'ideal_pa', 'ideal_pb', 'look', 'sex', 'age', 'comment'] class End(Page): def is_displayed(self): return self.round_number == 24 def vars_for_template(self): me = self.player me.totalpayoff = sum([me.payoff for me in me.in_all_rounds()]) me.code = random.randint(2000000, 2999999) return dict( totalpayoff=me.totalpayoff, code=me.code ) page_sequence = [Introduction, ParticipantsWaitPage, Matched, Decision_p1, Decisionp2WaitPage, Decision_p2, ResultsWaitPage, Results, Survey, End]