from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Instruction(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class Role(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class InstructionPlayer(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group != 1 and self.round_number == 1 class InstructionUmpire(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.round_number == 1 class ControlQuestionPlayer(Page): form_model = 'player' form_fields = ['QuestionPG', 'Questionme'] def is_displayed(self): return self.player.id_in_group != 1 and self.round_number == 1 class ResultsPlayer(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group != 1 and self.round_number == 1 class ControlQuestionUmpire(Page): form_model = 'player' form_fields = ['QuestionPG', 'QuestionUmp'] def is_displayed(self): return self.player.id_in_group == 1 and self.round_number == 1 class ResultUmpire(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.round_number == 1 class Start(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class Info(Page): form_model = 'player' form_fields = ['Info'] def is_displayed(self): return self.player.id_in_group != 1 and self.round_number != 1 class ElabortatinInfo(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.contribuzioni_gruppo_precedente_arbitro() class ElabortatinInfo2(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.punizioni_gruppo_precedente_arbitro() class Elaoratinginfo3(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.corruttori_prima() class Elaboratinginfo4(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.corruzione_prima() class DiscoveryUmpire(Page): form_model = 'player' def is_displayed(self): return self.player.Info == True class Contribuzione(Page): form_model = 'player' form_fields = ['contribution'] def is_displayed(self): return self.player.id_in_group != 1 class Giocatori(WaitPage): def is_displayed(self): return self.player.id_in_group != 1 def after_all_players_arrive(self): self.group.after_all_players_arrive() class WaitingUmpire(WaitPage): body_text = "Wait for other participants' decisions" def is_displayed(self): return self.group.get_player_by_id(1) def after_all_players_arrive(self): self.group.after_all_players_arrive() class Punishment2(Page): form_model = 'player' form_fields = ['punishment2'] def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl2 == 0 and self.player.contributionplayer2 < 99 and self.player.partecipantipg >1 class Punishment2Bribe(Page): form_model = 'player' form_fields = ['bribe2', 'punishment2'] def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl2 == 0 and self.player.contributionplayer2 > 99 and self.player.partecipantipg >1 class NoPunishment2(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl2 == 1 and self.player.partecipantipg > 1 class NoPunishment2NoPGExit(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl2 == 1 and self.player.partecipantipg <= 1 class NoPunishment2NoPG(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl2 == 0 and self.player.partecipantipg <= 1 class Punishment3(Page): form_model = 'player' form_fields = ['punishment3'] def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl3 == 0 and self.player.contributionplayer3 < 99 and self.player.partecipantipg >1 class Punishment3Bribe(Page): form_model = 'player' form_fields = ['bribe3', 'punishment3'] def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl3 == 0 and self.player.contributionplayer3 > 99 and self.player.partecipantipg >1 class NoPunishment3(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl3 == 1 and self.player.partecipantipg > 1 class NoPunishment3NoPGExi(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl3 == 1 and self.player.partecipantipg <= 1 class NoPunishment3NOPG(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl3 == 0 and self.player.partecipantipg <= 1 class Punishment4(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl4 == 0 and self.player.contributionplayer4 < 99 and self.player.partecipantipg >1 class Punishment4Bribe(Page): form_model = 'player' form_fields = ['bribe4', 'punishment4'] def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl4 == 0 and self.player.contributionplayer4 > 99 and self.player.partecipantipg >1 class NoPunishment4(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl4 == 1 and self.player.partecipantipg > 1 class NoPunishment4NOPG(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl4 == 0 and self.player.partecipantipg <= 1 class NoPunishment4NOPGEXIT(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 1 and self.player.exitpl4 == 1 and self.player.partecipantipg <= 1 class Attesagiocatori(WaitPage): body_text = "Wait for umpire's decisions" def is_displayed(self): return self.player.id_in_group != 1 def after_all_players_arrive(self): self.group.after_all_players_arrive() class ExecutingPayoffRound1(WaitPage): def is_displayed(self): return self.round_number == 1 def after_all_players_arrive(self): self.group.set_payoff1() class Punizioni(WaitPage): def after_all_players_arrive(self): self.group.punizioni_gruppi() class Giocate(WaitPage): def after_all_players_arrive(self): self.group.giocate() class PayoffRound1(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 def before_next_page(self): self.player.setglobals() class ExecutingPayoff2(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.set_payoff2() class Payoff2(Page): form_model = 'player' def is_displayed(self): return self.round_number != 1 def before_next_page(self): self.player.setglobals() class Punizioni2(WaitPage): def is_displayed(self): return self.round_number != 1 def after_all_players_arrive(self): self.group.punizioni_gruppi() class Ringraziamento(Page): form_model = 'player' def is_displayed(self): return self.round_number == 2 page_sequence = [Instruction, Role, InstructionPlayer, InstructionUmpire, ControlQuestionPlayer, ResultsPlayer, ControlQuestionUmpire, ResultUmpire, Start, Info, ElabortatinInfo, ElabortatinInfo2, Elaoratinginfo3, Elaboratinginfo4, DiscoveryUmpire, Contribuzione, Giocatori, WaitingUmpire, Punishment2, Punishment2Bribe, NoPunishment2, NoPunishment2NoPGExit, NoPunishment2NoPG, Punishment3, Punishment3Bribe, NoPunishment3, NoPunishment3NoPGExi, NoPunishment3NOPG, Punishment4, Punishment4Bribe, NoPunishment4, NoPunishment4NOPG, NoPunishment4NOPGEXIT, Attesagiocatori, ExecutingPayoffRound1, Punizioni, Giocate, PayoffRound1, ExecutingPayoff2, Payoff2, Punizioni2, Ringraziamento]