from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Intro(Page): form_model = 'player' class Effort(Page): form_model = 'player' form_fields = ['effort'] def before_next_page(self): if self.player.effort == 40: self.player.effort_string = "Active" if self.player.effort == 10: self.player.effort_string = "Inactive" class Effort_result(Page): form_model = 'player' class Strategy_intro(Page): form_model = 'player' class Active_strategy_low_earnings(Page): form_model = 'player' form_fields = ['strategy_low_earning'] def is_displayed(self): return self.player.effort == 40 def before_next_page(self): self.subsession.active() class Inactive_strategy_low_earnings(Page): form_model = 'player' form_fields = ['strategy_low_earning'] def is_displayed(self): return self.player.effort == 10 def before_next_page(self): self.subsession.inactive() class Earnings_result(Page): form_model = 'player' class Report_earnings_high(Page): form_model = 'player' def is_displayed(self): return self.player.earning == "High" def before_next_page(self): self.player.condition = self.player.earning + "High earnings" self.player.payoff_condition = self.player.effort_string + self.player.earning class Report_earnings_low(Page): form_model = 'player' def is_displayed(self): return self.player.earning == "Low" def before_next_page(self): self.player.condition = self.player.earning + self.player.strategy_low_earning class High_earning_strategy_high(Page): form_model = 'player' def is_displayed(self): return self.player.condition == "HighHigh earnings" def before_next_page(self): self.subsession.audit() self.player.condition_2 = self.player.condition + self.player.audit class No_audit(Page): form_model = 'player' def is_displayed(self): return self.player.condition_2 == "HighHigh earningsNo" def before_next_page(self): self.player.bonus = Constants.bonus self.player.penalty = 0 self.player.payoff_lira = Constants.salary - self.player.effort + self.player.bonus - self.player.penalty class Audit_honest(Page): form_model = 'player' def is_displayed(self): return self.player.condition_2 == "HighHigh earningsYes" def before_next_page(self): self.player.bonus = Constants.bonus self.player.penalty = 0 self.player.payoff_lira = Constants.salary - self.player.effort + self.player.bonus - self.player.penalty class Low_earning_strategy_high(Page): form_model = 'player' def is_displayed(self): return self.player.condition == "LowHigh earnings" def before_next_page(self): self.subsession.audit() self.player.condition_2 = self.player.condition + self.player.audit class No_audit_2(Page): form_model = 'player' def is_displayed(self): return self.player.condition_2 == "LowHigh earningsNo" def before_next_page(self): self.player.bonus = Constants.bonus self.player.penalty = 0 self.player.payoff_lira = Constants.salary - self.player.effort + self.player.bonus - self.player.penalty self.player.payoff_condition = self.player.effort_string + self.player.condition_2 class Audit_dishonest(Page): form_model = 'player' def is_displayed(self): return self.player.condition_2 == "LowHigh earningsYes" def before_next_page(self): self.player.penalty = Constants.penalty self.player.bonus = 0 self.player.payoff_lira = Constants.salary - self.player.effort + self.player.bonus - self.player.penalty self.player.payoff_condition = self.player.effort_string + self.player.condition_2 class Low_earning_strategy_low(Page): form_model = 'player' def is_displayed(self): return self.player.condition == "LowLow earnings" def before_next_page(self): self.player.bonus = 0 self.player.penalty = 0 self.player.payoff_lira = Constants.salary - self.player.effort + self.player.bonus - self.player.penalty self.player.payoff_condition = self.player.effort_string + self.player.condition class Payoff(Page): form_model = 'player' def before_next_page(self): self.player.payoff = Constants.base_pay + self.player.payoff_lira / 100 self.participant.payoff = self.player.payoff class Payoff_2(Page): form_model = 'player' page_sequence = [Intro, Effort, Effort_result, Strategy_intro, Active_strategy_low_earnings, Inactive_strategy_low_earnings, Earnings_result, Report_earnings_high, Report_earnings_low, High_earning_strategy_high, No_audit, Audit_honest, Low_earning_strategy_high, No_audit_2, Audit_dishonest, Low_earning_strategy_low, Payoff, Payoff_2]