from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants class Introduction(Page): def is_displayed(self): return self.subsession.round_number == 1 timeout_seconds = 180 class Decision(Page): def is_displayed(self): return self.subsession.round_number <= self.session.vars['max_rounds'] timeout_seconds = 20 def before_next_page(self): if self.timeout_happened: self.player.decision = 'High Discount' form_model = 'player' form_fields = ['decision'] def vars_for_template(self): me = self.player opponent = me.other_player() return dict( my_decision=me.decision, opponent_decision=opponent.decision, same_choice=me.decision == opponent.decision, player_in_all_rounds_rev=reversed(self.player.in_all_rounds()), ) class Wait(WaitPage): def is_displayed(self): return self.subsession.round_number <= self.session.vars['max_rounds'] template_name = 'Andalib_project/Wait.html' after_all_players_arrive = 'set_payoffs' def vars_for_template(self): me = self.player opponent = me.other_player() return dict( my_decision=me.decision, opponent_decision=opponent.decision, same_choice=me.decision == opponent.decision, player_in_all_rounds_rev=reversed(self.player.in_all_rounds()), ) class Results(Page): def is_displayed(self): return self.subsession.round_number <= self.session.vars['max_rounds'] def vars_for_template(self): me = self.player opponent = me.other_player() return dict( my_decision=me.decision, opponent_decision=opponent.decision, same_choice=me.decision == opponent.decision, player_in_all_rounds_rev=reversed(self.player.in_all_rounds()), ) class History(Page): def is_displayed(self): return self.round_number == self.session.vars['max_rounds'] def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() me = self.player opponent = me.other_player() return dict( my_decision=me.decision, opponent_decision=opponent.decision, same_choice=me.decision == opponent.decision, player_in_all_rounds_rev=reversed(self.player.in_all_rounds()), total_payoff_1=self.session.vars['total_payoff_P1'], total_payoff_2=self.session.vars['total_payoff_P2'], paying_round=self.session.vars['paying_round'], player_in_all_rounds=player_in_all_rounds, ) class Survey(Page): def is_displayed(self): return self.round_number == self.session.vars['max_rounds'] template_name = 'Andalib_project/Survey.html' form_model = 'player' form_fields = ['age', 'gender', 'race', 'major'] page_sequence = [Introduction, Decision, Wait, Results, History, Survey]