from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants #class MatchingWaitPage(WaitPage): # group_by_arrival_time = True # # def is_displayed(self): # return self.round_number == 1 class RoundWaitPage(WaitPage): template_name = 'channelsmin/RoundWaitPage.html' group_by_arrival_time = True def is_displayed(self): return self.player.active class Instruction(Page): def is_displayed(self): return self.player.active def vars_for_template(self): matching_group = self.group.get_player_by_id(1).matching_group return dict( endowB=Constants.endowmentsB[matching_group - 1][self.round_number - 1], endowA=Constants.endowmentsA[matching_group - 1][self.round_number - 1], ) def before_next_page(self): matching_group = self.group.get_player_by_id(1).matching_group self.group.endowA = Constants.endowmentsA[matching_group - 1][self.round_number-1] self.group.endowB = Constants.endowmentsB[matching_group - 1][self.round_number-1] class MyWaitPage(WaitPage): title_text = "Please wait for the other person." body_text = "Once you have both finished the instructions, negotiation will start." def is_displayed(self): return self.player.active class Slider(Page): timeout_seconds = 60 def is_displayed(self): return self.player.active def before_next_page(self): if self.timeout_happened: self.group.failed = True class Nuclear(Page): form_model = 'group' form_fields = ['nuclear'] def is_displayed(self): return self.player.active and (self.player.role() == 'B' and self.group.failed) def before_next_page(self): self.group.set_payoffs() import time self.participant.vars['wait_page_arrival'] = time.time() class RoundEnd(Page): def is_displayed(self): return self.player.active and (not self.group.failed or self.player.role() == 'A') def vars_for_template(self): return dict( payoffB = 100 - self.group.final_offer ) def before_next_page(self): self.group.set_payoffs() import time self.participant.vars['wait_page_arrival'] = time.time() class Out(Page): def is_displayed(self): return not self.player.active class Final(Page): def is_displayed(self): return self.round_number == Constants.num_rounds and self.player.active page_sequence = [ #MatchingWaitPage, RoundWaitPage, Instruction, MyWaitPage, Slider, Nuclear, RoundEnd, Out, Final ]