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 = 'BaNu_b/RoundWaitPage.html' group_by_arrival_time = True def is_displayed(self): return self.player.active def vars_for_template(self): return dict( arrival = int(self.participant.vars['wait_page_arrival']*1000) ) class Instruction(Page): def is_displayed(self): return self.player.active timeout_seconds = 10 timer_text = 'Time left before negotiation starts:' 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 seen the disagreement payoffs, negotiation will start." def is_displayed(self): return self.player.active after_all_players_arrive = 'set_time' class Slider(Page): timeout_seconds = 63 #timer_text = "Negotiation time:" def is_displayed(self): return self.player.active def vars_for_template(self): return dict( arrival=int(self.group.arrival), ) def before_next_page(self): if self.timeout_happened: self.group.failed = True class RoundEnd(Page): def is_displayed(self): return self.player.active timeout_seconds = 33 def vars_for_template(self): return dict( payoffB = 100 - self.group.final_offer, arrival=int(self.group.arrival), ) def before_next_page(self): self.group.set_payoffs() import time self.participant.vars['wait_page_arrival'] = time.time() if self.timeout_happened: self.participant.vars['active'] = False self.participant.vars['drop_out'] = True def app_after_this_page(self, upcoming_apps): if self.round_number == Constants.num_rounds: return "BaNu_questionnaire" class Out(Page): def is_displayed(self): return self.round_number == Constants.num_rounds and not self.player.active and not self.player.participant.vars['first_out'] #def app_after_this_page(self, upcoming_apps): #return "BaNu_questionnaire" class Final(Page): def is_displayed(self): return self.round_number == Constants.num_rounds and self.player.active def vars_for_template(self): pay_player = self.player.in_round(self.player.paying_round) #player_all = self.player.in_all_rounds() return dict( pay_round = pay_player.round_number, pay_payoff = float(pay_player.payoff)/10, pay_failed = pay_player.group.failed, #pay_nuclear = pay_player.group.nuclear ) def app_after_this_page(self, upcoming_apps): return "BaNu_questionnaire" page_sequence = [ #MatchingWaitPage, RoundWaitPage, Instruction, MyWaitPage, Slider, #Nuclear, RoundEnd, #Final, Out, ]