from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class greetings(Page): timeout_seconds = 30 def is_displayed(self): return self.round_number == 1 class firstcut_p1(Page): form_model = 'player' form_fields =['cut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 1 and self.round_number <= 5 class firstcut_p1_fulifo(Page): form_model = 'player' form_fields = ['cut_value'] def vars_for_template(self): return {'R': self.round_number, 'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 1 and self.round_number > 5 class firstcut_p2(Page): form_model = 'player' form_fields = ['cut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 2 and self.round_number <= 5 class firstcut_p2_fulifo(Page): form_model = 'player' form_fields = ['cut_value'] def vars_for_template(self): return {'R': self.round_number, 'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 2 and self.round_number > 5 class firstcut_p3(Page): form_model = 'player' form_fields = ['cut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 3 and self.round_number <= 5 class firstcut_p3_fulifo(Page): form_model = 'player' form_fields = ['cut_value'] def vars_for_template(self): return {'R': self.round_number, 'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help} def is_displayed(self): return self.player.id_in_group == 3 and self.round_number > 5 class Waitpage_1(WaitPage): def after_all_players_arrive(self): for player in self.group.get_players(): player.find_min() for player in self.group.get_players(): player.find_leftmost() for player in self.group.get_players(): player.find_firstcut() for player in self.group.get_players(): player.find_leftmostvalue_1() for player in self.group.get_players(): player.dim_find_min() for player in self.group.get_players(): player.check_dropout() self.group.check_overlapping_1() for player in self.group.get_players(): player.dim_check_dropout() class Results_1_p1(Page): timeout_seconds = 20 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 1 class Results_1_p2(Page): timeout_seconds = 20 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 2 class Results_1_p3(Page): timeout_seconds = 20 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 3 class secondcut_p1(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.dropout == 0 and self.round_number <= 5 class secondcut_p1_fulifo(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.dropout == 0 and self.round_number > 5 class secondcut_p2(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.dropout == 0 and self.round_number <= 5 class secondcut_p2_fulifo(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.dropout == 0 and self.round_number > 5 class secondcut_p3(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.dropout == 0 and self.round_number <= 5 class secondcut_p3_fulifo(Page): form_model = 'player' form_fields = ['secondcut_value'] def vars_for_template(self): return {'R': self.round_number,'P': self.player.in_round(max(1, self.round_number - 1)).payoff_help,'D':int((120 - self.player.leftmostvalue_1)/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.dropout == 0 and self.round_number > 5 class Waitpage_2(WaitPage): def after_all_players_arrive(self): for player in self.group.get_players(): player.find_min_2() for player in self.group.get_players(): player.find_leftmost_2() for player in self.group.get_players(): player.find_secondcut() for player in self.group.get_players(): player.find_leftmostvalue_2() for player in self.group.get_players(): player.dim_find_min_2() for player in self.group.get_players(): player.check_seconddropout() self.group.check_overlapping_2() for player in self.group.get_players(): player.dim_check_seconddropout() for player in self.group.get_players(): player.get_whatsleft() for player in self.group.get_players(): player.get_payoff() for player in self.group.get_players(): player.set_envy() for player in self.group.get_players(): player.score_calculation() for player in self.group.get_players(): player.set_planned_leftpiece_1() for player in self.group.get_players(): player.set_truthtelling_1() for player in self.group.get_players(): player.set_planned_leftpiece_2() for player in self.group.get_players(): player.set_truthtelling_2() class Roundresult_L1_p1(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 1 class Roundresult_L1_p2(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 2 class Roundresult_L1_p3(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.dropout == 1 and self.player.id_in_group == 3 class Roundresult_L2_p1(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 1 and self.player.id_in_group == 1 class Roundresult_L2_p2(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 1 and self.player.id_in_group == 2 class Roundresult_L2_p3(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 1 and self.player.id_in_group == 3 class Roundresult_L3_p1(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 0 and self.player.dropout == 0 and self.player.id_in_group == 1 class Roundresult_L3_p2(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 0 and self.player.dropout == 0 and self.player.id_in_group == 2 class Roundresult_L3_p3(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.seconddropout == 0 and self.player.dropout == 0 and self.player.id_in_group == 3 class finished(Page): timeout_seconds = 15 def is_displayed(self): return self.round_number == 7 page_sequence = [ greetings, firstcut_p1, firstcut_p1_fulifo, firstcut_p2, firstcut_p2_fulifo, firstcut_p3, firstcut_p3_fulifo, Waitpage_1, Results_1_p1, Results_1_p2, Results_1_p3, secondcut_p1, secondcut_p1_fulifo, secondcut_p2, secondcut_p2_fulifo, secondcut_p3, secondcut_p3_fulifo, Waitpage_2, Roundresult_L1_p1, Roundresult_L1_p2, Roundresult_L1_p3, Roundresult_L2_p1, Roundresult_L2_p2, Roundresult_L2_p3, Roundresult_L3_p1, Roundresult_L3_p2, Roundresult_L3_p3, finished ]