from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Decision(Page): def is_displayed(self): return self.player.participant.vars['active']==1 timeout_seconds = 60 form_model = 'player' form_fields = ['choice'] def before_next_page(self): if self.timeout_happened: self.player.choice = '-9' self.player.participant.vars['active'] = 0 def vars_for_template(self): return { 'three': self.player.connections==3, 'red_cost': self.group.red_cost == self.player.connections, 'round_red': self.player.round_number in range(int((Constants.num_rounds/3)+1), int((Constants.num_rounds*2/3)+1)), } pass class Inactive(Page): def is_displayed(self): return self.player.participant.vars['active']==0 timeout_seconds = 60 def before_next_page(self): if self.timeout_happened: self.player.act = 0 self.player.choice = '-9' else: self.player.act = 1 self.player.participant.vars['active'] = 1 pass class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoff() pass class Results(Page): def is_displayed(self): return self.player.choice != '-9' and self.group.no_net!='True' def vars_for_template(self): return{ 'act': self.player.choice=='active', } pass class NoNet(Page): def is_displayed(self): return self.group.no_net=='True' and self.player.choice!='-9' pass class Round11(Page): def is_displayed(self): return self.round_number==int((Constants.num_rounds/3)+1) pass class Round21(Page): def is_displayed(self): return self.round_number==int((Constants.num_rounds*2/3)+1) pass page_sequence = [ Round11, Round21, Inactive, Decision, ResultsWaitPage, Results, NoNet, ]