from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class receiver(Page): form_model = 'player' def is_displayed(self): return self.round_number in [1,6,11] class receiver_2(Page): form_model = 'player' form_fields = ['verification_choice'] def is_displayed(self): return self.round_number not in [1,6,11] class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): group = self.group players = group.get_players() for p in players: if p.role() == "blue": if p.response == "Believe": group.blue_decision = "Believe" elif p.response == "Insure": group.blue_decision = "Insure" else: group.blue_decision = "Risk-Avert" for p in players: if p.role() == "blue": if group.accurate == True and group.blue_decision == 'Believe': p.payoff += 12 elif group.accurate == True and group.blue_decision == 'Insure': p.payoff += 9 elif group.accurate == True and group.blue_decision == 'Risk-Avert': p.payoff += 6 elif group.accurate == False and group.blue_decision == 'Believe': p.payoff += 0 elif group.accurate == False and group.blue_decision == 'Insure': p.payoff += 3 else: p.payoff += 6 class Results(Page): def is_displayed(self): return self.round_number == 15 class verification(Page): form_model = 'player' def after_all_players_arrive(self): group = self.group players = group.get_players() for p in players: if p.verification_choice == 'At least 1 Red Player (cost $2)': return group.reveal() == 'All Red Players sent an ACCURATE message' elif p.verification_choice == 'Partner Red Player (cost $6)': return group.reveal() == 'The Partner Red Player sent an ACCURATE message' else: return group.reveal() == 'pass' def is_displayed(self): return self.round_number not in [1,6,11] and group.reveal() != 'pass' class receiver_choice(Page): form_model = 'player' form_fields = ['response'] class survey_1(Page): form_model = 'player' form_fields = ['trustQuestion1', 'trustQuestion2', 'trustQuestion3' ,'trustQuestion4'] class rd_6_defense(Page): def is_displayed(self): return self.round_number in [6] class self_disclose(Page): form_model = 'player' def after_all_players_arrive(self): subsessions = self.subsession groups = subsessions.get_groups() for g in groups: if subsession.round_number in [5,15]: g.disclosure = 'I do not wish to disclose anything' elif subsession.round_number in [10]: g.disclosure = 'THE SELF_DISCLOSURE' else: pass def is_displayed(self): return self.round_number in [5,10,15] class verification_choice(Page): form_model = 'player' form_field = ['end_verification_choice'] def is_displayed(self): return subsession.round_number in [5,10,15] class end_verification(Page): form_model = 'player' def after_all_players_arrive(self): group = self.group players = group.get_players() for p in players: if p.end_verification_choice == 'Yes (cost $2)' and subsession.round_number in [5,15]: return group.end_reveal() == 'Your partner Red Player DID NOT send an inaccurate message in any round of the block' elif p.verification_choice == 'Yes (cost $2)' and subsession.round_number in [10]: return group.end_reveal() == 'Your partner Red Player sent at least one INACCURATE message in the block.' \ 'The message sent in the first round of the block was INACCURATE' else: return group.end_reveal() == 'none' def is_displayed(self): return self.round_number not in [5,10,15] and group.end_reveal() != 'none' class replace_choice(Page): form_model = 'player' form_field = ['replace'] def is_displayed(self): return self.round_number in [5,10,15] class replace_defense(Page): def after_all_players_arrive(self): group = self.group players= group.get_players() for p in players: if p.replace == 'Replace (cost $8BP/$2RP)': group.replace_defense = 'REDIRECT PATH' elif p.replace == 'Do not Replace': pass def is_displayed(self): return self.round_number in [5,10,15] and self.replace() == 'Replace (cost $8BP/$2RP)' class message_no_replace(Page): def is_displayed(self): return self.round_number in [5,10,15] page_sequence = [receiver, receiver_2, survey_1, verification, rd_6_defense, survey_1, receiver_choice, self_disclose, survey_1, verification_choice, end_verification, replace_choice, replace_defense, survey_1, message_no_replace, ResultsWaitPage, Results]