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 firstcut_p4(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 == 4 and self.round_number <= 5 class firstcut_p4_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 == 4 and self.round_number > 5 class Waitpage_1(WaitPage): def after_all_players_arrive(self): self.group.set_splitpoint() self.group.find_values() class secondcut_p1_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.is_in_left_part == 1 and self.round_number <= 5 class secondcut_p1_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.is_in_left_part == 0 and self.round_number <= 5 class secondcut_p1_fulifo_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.is_in_left_part == 1 and self.round_number > 5 class secondcut_p1_fulifo_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 1 and self.player.is_in_left_part == 0 and self.round_number > 5 class secondcut_p2_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.is_in_left_part == 1 and self.round_number <= 5 class secondcut_p2_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.is_in_left_part == 0 and self.round_number <= 5 class secondcut_p2_fulifo_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.is_in_left_part == 1 and self.round_number > 5 class secondcut_p2_fulifo_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 2 and self.player.is_in_left_part == 0 and self.round_number > 5 class secondcut_p3_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.is_in_left_part == 1 and self.round_number <= 5 class secondcut_p3_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.is_in_left_part == 0 and self.round_number <= 5 class secondcut_p3_fulifo_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.is_in_left_part == 1 and self.round_number > 5 class secondcut_p3_fulifo_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 3 and self.player.is_in_left_part == 0 and self.round_number > 5 class secondcut_p4_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 4 and self.player.is_in_left_part == 1 and self.round_number <= 5 class secondcut_p4_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 4 and self.player.is_in_left_part == 0 and self.round_number <= 5 class secondcut_p4_fulifo_L(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(self.player.left_value/2)} def is_displayed(self): return self.player.id_in_group == 4 and self.player.is_in_left_part == 1 and self.round_number > 5 class secondcut_p4_fulifo_R(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(self.player.right_value/2)} def is_displayed(self): return self.player.id_in_group == 4 and self.player.is_in_left_part == 0 and self.round_number > 5 class Waitpage_2(WaitPage): def after_all_players_arrive(self): self.group.find_leftmost() self.group.find_leftmostvalue_1() self.group.find_leftmostvalue_2() self.group.find_leftmostvalue_3() 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_1st_stage() for player in self.group.get_players(): player.set_planned_leftpiece_2() for player in self.group.get_players(): player.set_truthtelling_2nd_stage() 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.is_in_left_part == 1 and self.player.is_leftmost == 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.is_in_left_part == 1 and self.player.is_leftmost == 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.is_in_left_part == 1 and self.player.is_leftmost == 1 and self.player.id_in_group == 3 class Roundresult_L1_p4(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 1 and self.player.is_leftmost == 1 and self.player.id_in_group == 4 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.is_in_left_part == 1 and self.player.is_leftmost == 0 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.is_in_left_part == 1 and self.player.is_leftmost == 0 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.is_in_left_part == 1 and self.player.is_leftmost == 0 and self.player.id_in_group == 3 class Roundresult_L2_p4(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 1 and self.player.is_leftmost == 0 and self.player.id_in_group == 4 class Roundresult_R1_p1(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 1 and self.player.id_in_group == 1 class Roundresult_R1_p2(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 1 and self.player.id_in_group == 2 class Roundresult_R1_p3(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 1 and self.player.id_in_group == 3 class Roundresult_R1_p4(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 1 and self.player.id_in_group == 4 class Roundresult_R2_p1(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 0 and self.player.id_in_group == 1 class Roundresult_R2_p2(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 0 and self.player.id_in_group == 2 class Roundresult_R2_p3(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 0 and self.player.id_in_group == 3 class Roundresult_R2_p4(Page): timeout_seconds = 30 def vars_for_template(self): return {'R': self.round_number} def is_displayed(self): return self.player.is_in_left_part == 0 and self.player.is_leftmost == 0 and self.player.id_in_group == 4 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, firstcut_p4, firstcut_p4_fulifo, Waitpage_1, secondcut_p1_L, secondcut_p1_R, secondcut_p1_fulifo_L, secondcut_p1_fulifo_R, secondcut_p2_L, secondcut_p2_R, secondcut_p2_fulifo_L, secondcut_p2_fulifo_R, secondcut_p3_L, secondcut_p3_R, secondcut_p3_fulifo_L, secondcut_p3_fulifo_R, secondcut_p4_L, secondcut_p4_R, secondcut_p4_fulifo_L, secondcut_p4_fulifo_R, Waitpage_2, Roundresult_L1_p1, Roundresult_L1_p2, Roundresult_L1_p3, Roundresult_L1_p4, Roundresult_L2_p1, Roundresult_L2_p2, Roundresult_L2_p3, Roundresult_L2_p4, Roundresult_R1_p1, Roundresult_R1_p2, Roundresult_R1_p3, Roundresult_R1_p4, Roundresult_R2_p1, Roundresult_R2_p2, Roundresult_R2_p3, Roundresult_R2_p4, finished ]