from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants import random class AAgreement(Page): form_model = 'player' form_fields = ['agreement'] class Introduction(Page): """Description of the game: How to play and returns expected""" class PerformerGrid(Page): form_model = 'player' form_fields = ['Grid1','Grid2','Grid3','Grid4','Grid5','Grid6','Grid7','Grid8','Grid9','Grid10','Grid11','Grid12'] timeout_seconds = 3 def before_next_page(self): self.player.set_grid_results() self.player.set_grid_results_total() self.player.income_group() self.player.treatments() self.player.fake_probability() self.player.elections() class ResultsZeroes(Page): form_model = 'player' class Corruption(Page): def is_displayed(self): return self.player.corruption == 0.4 class Honest(Page): def is_displayed(self): return self.player.corruption == 0 class Evasion(Page): form_model = 'player' form_fields = ['taxes'] def is_displayed(self): return self.player.is_politician == 0 def before_next_page(self): self.player.evasions() self.player.probability() self.player.detections() class Detection(Page): def is_displayed(self): return self.player.is_politician == 0 def before_next_page(self): self.player.fines() self.player.set_citizen_payoffs() class CorruptPoliticianChoice(Page): def is_displayed(self): if self.player.is_politician == 1 and not self.player.is_politician == 0: if self.player.corruption == 0.4: return True return False form_model = 'player' form_fields = ['stolen_taxes'] def before_next_page(self): self.player.set_politician_payoff() class HonestPoliticianChoice(Page): def is_displayed(self): if self.player.is_politician == 1 and not self.player.is_politician == 0: if self.player.corruption == 0: return True return False form_model = 'player' def before_next_page(self): self.player.set_politician_payoff() class ControlQuestions(Page): form_model = 'player' form_fields = ['CQ1', 'CQ2', 'CQ3', 'CQ4', 'CQ5', 'CQ6'] class SurveyQuestions(Page): form_model = 'player' form_fields = ['SQ1'] class SurveyQuestions2(Page): form_model = 'player' form_fields = ['SQ2_1','SQ2_2','SQ2_3','SQ2_4'] def get_form_fields(self): fields = ['SQ2_1','SQ2_2','SQ2_3','SQ2_4'] random.shuffle(fields) return fields class SurveyQuestions3_Corrupt(Page): def is_displayed(self): return self.player.corruption == 0.4 form_model = 'player' form_fields = ['SQ3'] class SurveyQuestions3_Honest(Page): def is_displayed(self): return self.player.corruption == 0 form_model = 'player' form_fields = ['SQ3'] class SurveyQuestions3Bad(Page): def is_displayed(self): return self.player.SQ3 == 1 form_model = 'player' form_fields = ['SQ3_bad1', 'SQ3_bad2', 'SQ3_bad3', 'SQ3_bad4'] def get_form_fields(self): fields = self.form_fields random.shuffle(fields) return fields class SurveyQuestions3Good(Page): def is_displayed(self): return self.player.SQ3 == 2 form_model = 'player' form_fields = ['SQ3_good1', 'SQ3_good2', 'SQ3_good3', 'SQ3_good4'] def get_form_fields(self): fields = self.form_fields random.shuffle(fields) return fields class SurveyQuestions3Indiff(Page): def is_displayed(self): return self.player.SQ3 == 0 form_model = 'player' form_fields = ['SQ3_indiff1', 'SQ3_indiff2', 'SQ3_indiff3', 'SQ3_indiff4'] def get_form_fields(self): fields = self.form_fields random.shuffle(fields) return fields class Results(Page): def is_displayed(self): return self.player.is_politician == 0 class ResultsHonestPolitician(Page): def is_displayed(self): if self.player.is_politician == 1 and not self.player.is_politician == 0: if self.player.corruption == 0: return True return False class ResultsCorruptPolitician(Page): def is_displayed(self): if self.player.is_politician == 1 and not self.player.is_politician == 0: if self.player.corruption == 0.4: return True return False page_sequence = [ AAgreement, Introduction, PerformerGrid, ResultsZeroes, Corruption, Honest, Evasion, Detection, CorruptPoliticianChoice, HonestPoliticianChoice, ControlQuestions, SurveyQuestions, SurveyQuestions2, SurveyQuestions3_Corrupt, SurveyQuestions3_Honest, SurveyQuestions3Bad, SurveyQuestions3Good, SurveyQuestions3Indiff, Results, ResultsCorruptPolitician, ResultsHonestPolitician ]