from ._builtin import Page, WaitPage from .models import Constants import random class MyWaitPage(WaitPage): group_by_arrival_time = True title_text = "Por favor espere a la llegada de otro participante" body_text = "Esto podría tardar algunos minutos." def is_displayed(self): return self.round_number == 1 class Asignacion(Page): def vars_for_template(self): return {'round_number': self.round_number, 'player': self.player.id_in_group } class Espera(WaitPage): title_text = "Por favor espere mientras el Jugador 2 juega." body_text = "Esto podría tardar algunos minutos." form_model = 'group' def is_displayed(self): return self.player.id_in_group == 1 class Duplicar(Page): form_model = 'group' form_fields = ['ariesga'] def is_displayed(self): return self.player.id_in_group == 2 def before_next_page(self): prob = random.randint(1, 101) if prob <= 50: self.group.perdida_j1 = True elif prob > 50 and prob <= 100: self.group.perdida_j1 = False else: print(f"valor de prob invalido: {prob}") def vars_for_template(self): return {'endowment': Constants.endowment, 'double': Constants.duplicate, 'nothing': Constants.zero, 'ronda': self.round_number } class Donacion1(Page): form_model = 'group' form_fields = ['dona'] def is_displayed(self): return self.player.id_in_group == 2 and self.group.ariesga == "Sí" and self.group.perdida_j1 is True def vars_for_template(self): return {'endowment': Constants.endowment, 'double': Constants.duplicate, 'nothing': Constants.zero, 'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1 } def before_next_page(self): return 'set_payoffs' class Donacion2(Page): form_model = 'group' form_fields = ['dona'] def is_displayed(self): return (self.player.id_in_group == 2) and (self.group.ariesga == "Sí") and (self.group.perdida_j1 is False) def vars_for_template(self): return {'endowment': Constants.endowment, 'double': Constants.duplicate, 'nothing': Constants.zero, 'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1 } def before_next_page(self): return 'set_payoffs' class Donacion3(Page): form_model = 'group' form_fields = ['dona'] def is_displayed(self): return self.player.id_in_group == 2 and self.group.ariesga == "No" def vars_for_template(self): return {'endowment': Constants.endowment, 'double': Constants.duplicate, 'nothing': Constants.zero, 'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1 } def before_next_page(self): return 'set_payoffs' class Resultados_Finales(Page): form_model = 'group' def vars_for_template(self): return {'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1, 'dona': self.group.dona } class res1(Page): form_model = 'group' def vars_for_template(self): return {'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1, 'dona': self.group.dona, 'pay1': Constants.zero + self.group.dona, 'pay2': Constants.duplicate - self.group.dona } def is_displayed(self): return self.group.ariesga == "Sí" and self.group.perdida_j1 is True class res2(Page): form_model = 'group' def vars_for_template(self): return {'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1, 'dona': self.group.dona, 'pay1': Constants.endowment + self.group.dona, 'pay2': Constants.duplicate - self.group.dona } def is_displayed(self): return self.group.ariesga == "Sí" and self.group.perdida_j1 is False class res3(Page): form_model = 'group' def vars_for_template(self): return {'ronda': self.round_number, 'ariesga': self.group.ariesga, 'perdidaj1': self.group.perdida_j1, 'dona': self.group.dona, 'pay1': Constants.endowment + self.group.dona, 'pay2': Constants.endowment - self.group.dona } def is_displayed(self): return self.group.ariesga == "No" class Descanso(WaitPage): title_text = "Este es un descanso programado de 30 segundos entre rondas." body_text = "Le agradecemos permanezca atento." timeout_seconds = 30 def is_displayed(self): return self.round_number == 1 or self.round_number == 2 page_sequence = [MyWaitPage, Asignacion, Espera, Duplicar, Espera, Donacion1, Donacion2, Donacion3, res1, res2, res3, Descanso]