from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Survey(Page): timeout_seconds = 0.000001 def before_next_page(self): self.subsession.paying_Gamble() class riskAndTime(Page): form_model = 'player' form_fields = ['risk', 'discounting'] class Predictions(Page): form_model = 'player' form_fields = ['die', 'retire', 'claim', 'confidenceInSSB'] class CognitiveReflectionTest(Page): form_model = 'player' form_fields = ['answer_1', 'answer_2', 'answer_3', 'answer_4'] class MultipleChoice(Page): form_model = 'player' form_fields = ['MC_answer_1', 'MC_answer_2', 'MC_answer_3'] class RiskAttitude(Page): form_model = 'player' form_fields = ['risk_answer_01', 'risk_answer_02', 'risk_answer_03', 'risk_answer_04', 'risk_answer_05', 'risk_answer_06', 'risk_answer_07', 'risk_answer_08', 'risk_answer_09', 'risk_answer_10'] def before_next_page(self): player = self.player paying_gamble = self.subsession.payingGamble if paying_gamble == 1: took_risk = player.risk_answer_01 == 2 elif paying_gamble == 2: took_risk = player.risk_answer_02 == 2 elif paying_gamble == 3: took_risk = player.risk_answer_03 == 2 elif paying_gamble == 4: took_risk = player.risk_answer_04 == 2 elif paying_gamble == 5: took_risk = player.risk_answer_05 == 2 elif paying_gamble == 6: took_risk = player.risk_answer_06 == 2 elif paying_gamble == 7: took_risk = player.risk_answer_07 == 2 elif paying_gamble == 8: took_risk = player.risk_answer_08 == 2 elif paying_gamble == 9: took_risk = player.risk_answer_09 == 2 else: took_risk = player.risk_answer_10 == 2 p = random.random() # The constants are stored as dollars, so they need to be converted into points #multiplier = 1/c(1).to_real_world_currency(self.session) if p < 0.5: if took_risk: player.risk_payoff = Constants.risky_choice_constant else: player.risk_payoff = Constants.safe_choice_constant else: if took_risk: player.risk_payoff = Constants.risky_choice_list[paying_gamble-1] else: player.risk_payoff = Constants.safe_choice_list[paying_gamble-1] class Questionnaire(Page): form_model = 'player' form_fields = ['age', 'birthyear', 'gender', 'race', 'income', 'education', 'ZIP', 'comments'] def before_next_page(self): self.player.set_payoffs() self.participant.vars['Risk_Payoff'] = self.player.payoff class FinalResults(Page): def vars_for_template(self) -> dict: return { 'paying_gamble': self.subsession.payingGamble } page_sequence = [ Survey, riskAndTime, Predictions, RiskAttitude, CognitiveReflectionTest, MultipleChoice, Questionnaire, FinalResults ]