from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Wait(WaitPage): def after_all_players_arrive(self): self.group.order = random.randint(1, 6) class Naam(Page): def is_displayed(self): return self.round_number == 1 form_model = "player" form_fields = ['name'] class Choice_Order1(Page): def is_displayed(self): return self.group.order == 1 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class Choice_Order2(Page): def is_displayed(self): return self.group.order == 2 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class Choice_Order3(Page): def is_displayed(self): return self.group.order == 3 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class Choice_Order4(Page): def is_displayed(self): return self.group.order == 4 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class Choice_Order5(Page): def is_displayed(self): return self.group.order == 5 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class Choice_Order6(Page): def is_displayed(self): return self.group.order == 6 form_model = "player" form_fields = ['color'] def vars_for_template(self): if self.round_number == 1: name = self.player.name return {'naam': name} else: name = self.participant.vars['name'] return {'naam': name} def before_next_page(self): if self.round_number == 1: self.participant.vars['name'] = self.player.name if self.round_number > 1: self.player.name = self.participant.vars['name'] class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() class Results(Page): def vars_for_template(self): p1 = self.group.get_player_by_id(1) p2 = self.group.get_player_by_id(2) p1_color = p1.color p1_name = p1.name p2_color = p2.color p2_name = p2.name payoff = p1.payoff if p1.match == True: outcome = "WEL" else: outcome = "NIET" if self.player.id_in_group == 1: return {'own_name': p1_name,'own_choice': p1_color, 'others_choice': p2_color, 'others_name': p2_name,'payoff': payoff, 'outcome': outcome} if self.player.id_in_group == 2: return {'own_name': p2_name,'own_choice': p2_color, 'others_choice': p1_color, 'others_name': p1_name,'payoff': payoff, 'outcome': outcome} class Eindscore(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): total_payoff = self.participant.payoff return {'total_payoff': total_payoff} page_sequence = [ Wait, Naam, Choice_Order1, Choice_Order2, Choice_Order3, Choice_Order4, Choice_Order5, Choice_Order6, ResultsWaitPage, Results, Eindscore ]