from random import random from random import normalvariate from otree.api import ( Currency as c, ) from otree.models import player from ._builtin import Page class Instructions(Page): form_model = 'player' form_fields = ['age', 'gender'] def is_displayed(self): if self.round_number == 1: return True else: return False class Choice(Page): form_model = 'player' form_fields = ['decision'] def __init__(self): self.arm_e = normalvariate(1000, 100) self.arm_d = normalvariate(850, 85) self.arm_c = normalvariate(1150, 115) self.arm_b = normalvariate(1350, 135) self.arm_a = normalvariate(750, 75) def in_all_rounds(self): self.arm_e = normalvariate(1000, 100) self.arm_d = normalvariate(850, 85) self.arm_c = normalvariate(1150, 115) self.arm_b = normalvariate(1350, 135) self.arm_a = normalvariate(750, 75) def vars_for_template(self): me = self.player player_in_all_rounds = self.player.in_all_rounds() return dict ( previous_decision=me.in_previous_rounds(), total_payoff=sum([p.payoff for p in player_in_all_rounds]), ) def before_next_page(self): me = self.player if me.decision == 'Arm_A': me.payoff = self.arm_a elif me.decision == 'Arm_B': me.payoff = self.arm_b elif me.decision == 'Arm_C': me.payoff = self.arm_c elif me.decision == 'Arm_D': me.payoff = self.arm_d elif me.decision == 'Arm_E': me.payoff = self.arm_e return me.payoff class Beliefs(Page): form_model = 'player' form_fields = ['beliefs'] def is_displayed(self): if self.round_number == 1: return True elif self.round_number == 5: return True elif self.round_number == 10: return True elif self.round_number == 15: return True elif self.round_number == 20: return True elif self.round_number == 25: return True elif self.round_number == 30: return True elif self.round_number == 35: return True elif self.round_number == 40: return True elif self.round_number == 45: return True elif self.round_number == 50: return True elif self.round_number == 55: return True elif self.round_number == 60: return True elif self.round_number == 65: return True elif self.round_number == 70: return True elif self.round_number == 75: return True elif self.round_number == 80: return True elif self.round_number == 85: return True elif self.round_number == 90: return True elif self.round_number == 95: return True elif self.round_number == 100: return True else: return False class Results(Page): def vars_for_template(self): me = self.player return { 'my_decision': me.decision, 'my_payoff': me.payoff, 'my_beliefs': me.beliefs, } page_sequence = [Instructions, Choice, Beliefs, Results]