from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'Basic_Income_Study_1' players_per_group = None num_rounds = 10 fixed_costs = c(6) basic_income = social_security = c(10) class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): p.number1 = random.randint(1, 100) p.number2 = random.randint(1, 100) p.number3 = random.randint(1, 100) p.number4 = random.randint(1, 100) p.number5 = random.randint(1, 100) p.number6 = random.randint(1, 100) p.number7 = random.randint(1, 100) p.number8 = random.randint(1, 100) p.number9 = random.randint(1, 100) p.number10 = random.randint(1, 100) p.number11 = random.randint(1, 100) p.number12 = random.randint(1, 100) p.number13 = random.randint(1, 100) p.number14 = random.randint(1, 100) p.number15 = random.randint(1, 100) p.number16 = random.randint(1, 100) p.number17 = random.randint(1, 100) p.number18 = random.randint(1, 100) p.number19 = random.randint(1, 100) p.number20 = random.randint(1, 100) p.number21 = random.randint(1, 100) p.number22 = random.randint(1, 100) p.number23 = random.randint(1, 100) p.number24 = random.randint(1, 100) p.number25 = random.randint(1, 100) p.number26 = random.randint(1, 100) p.number27 = random.randint(1, 100) p.number28 = random.randint(1, 100) p.number29 = random.randint(1, 100) p.number30 = random.randint(1, 100) p.number31 = random.randint(1, 100) p.number32 = random.randint(1, 100) p.treatment = self.session.config['treatment'] class Group(BaseGroup): pass class Player(BasePlayer): number1 = models.IntegerField() number2 = models.IntegerField() number3 = models.IntegerField() number4 = models.IntegerField() number5 = models.IntegerField() number6 = models.IntegerField() number7 = models.IntegerField() number8 = models.IntegerField() number9 = models.IntegerField() number10 = models.IntegerField() number11 = models.IntegerField() number12 = models.IntegerField() number13 = models.IntegerField() number14 = models.IntegerField() number15 = models.IntegerField() number16 = models.IntegerField() number17 = models.IntegerField() number18 = models.IntegerField() number19 = models.IntegerField() number20 = models.IntegerField() number21 = models.IntegerField() number22 = models.IntegerField() number23 = models.IntegerField() number24 = models.IntegerField() number25 = models.IntegerField() number26 = models.IntegerField() number27 = models.IntegerField() number28 = models.IntegerField() number29 = models.IntegerField() number30 = models.IntegerField() number31 = models.IntegerField() number32 = models.IntegerField() s1 = models.IntegerField() s2 = models.IntegerField() s3 = models.IntegerField() s4 = models.IntegerField() s5 = models.IntegerField() s6 = models.IntegerField() s7 = models.IntegerField() s8 = models.IntegerField() s9 = models.IntegerField() s10 = models.IntegerField() s11 = models.IntegerField() s12 = models.IntegerField() s13 = models.IntegerField() s14 = models.IntegerField() s15 = models.IntegerField() s16 = models.IntegerField() s17 = models.IntegerField() s18 = models.IntegerField() s19 = models.IntegerField() s20 = models.IntegerField() s21 = models.IntegerField() s22 = models.IntegerField() s23 = models.IntegerField() s24 = models.IntegerField() s25 = models.IntegerField() s26 = models.IntegerField() s27 = models.IntegerField() s28 = models.IntegerField() s29 = models.IntegerField() s30 = models.IntegerField() s31 = models.IntegerField() s32 = models.IntegerField() device_type = models.StringField() is_mobile = models.BooleanField() correct = models.IntegerField() treatment = models.IntegerField() treatment_name = models.StringField() choose_to_work = models.BooleanField() saldo = models.CurrencyField() def set_payoffs(self): self.correct = 0 if self.s1 == self.number1: self.correct = self.correct + 1 if self.s2 == self.number2: self.correct = self.correct + 1 if self.s3 == self.number3: self.correct = self.correct + 1 if self.s4 == self.number4: self.correct = self.correct + 1 if self.s5 == self.number5: self.correct = self.correct + 1 if self.s6 == self.number6: self.correct = self.correct + 1 if self.s7 == self.number7: self.correct = self.correct + 1 if self.s8 == self.number8: self.correct = self.correct + 1 if self.s9 == self.number9: self.correct = self.correct + 1 if self.s10 == self.number10: self.correct = self.correct + 1 if self.s11 == self.number11: self.correct = self.correct + 1 if self.s12 == self.number12: self.correct = self.correct + 1 if self.s13 == self.number13: self.correct = self.correct + 1 if self.s14 == self.number14: self.correct = self.correct + 1 if self.s15 == self.number15: self.correct = self.correct + 1 if self.s16 == self.number16: self.correct = self.correct + 1 if self.s17 == self.number17: self.correct = self.correct + 1 if self.s18 == self.number18: self.correct = self.correct + 1 if self.s19 == self.number19: self.correct = self.correct + 1 if self.s20 == self.number20: self.correct = self.correct + 1 if self.s21 == self.number21: self.correct = self.correct + 1 if self.s22 == self.number22: self.correct = self.correct + 1 if self.s23 == self.number23: self.correct = self.correct + 1 if self.s24 == self.number24: self.correct = self.correct + 1 if self.s25 == self.number25: self.correct = self.correct + 1 if self.s26 == self.number26: self.correct = self.correct + 1 if self.s27 == self.number27: self.correct = self.correct + 1 if self.s28 == self.number28: self.correct = self.correct + 1 if self.s29 == self.number29: self.correct = self.correct + 1 if self.s30 == self.number30: self.correct = self.correct + 1 if self.s31 == self.number31: self.correct = self.correct + 1 if self.s32 == self.number32: self.correct = self.correct + 1 if self.treatment == 1: self.treatment_name = "control" self.payoff = c(self.correct) - Constants.fixed_costs if self.treatment == 2: self.treatment_name = "basic_income" self.payoff = c(self.correct) + Constants.basic_income - Constants.fixed_costs if self.treatment == 3: self.treatment_name = "social_security" if self.choose_to_work == True: self.payoff = c(self.correct) - Constants.fixed_costs if self.choose_to_work == False: self.payoff = Constants.social_security - Constants.fixed_costs motive_1 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_2 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_3 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_4 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_5 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_6 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_7 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_8 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_9 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) motive_10 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_1 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_2 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_3 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_4 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_5 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_6 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) MTS7_7 = models.IntegerField( choices=[1, 2, 3, 4, 5, 6, 7], widget=widgets.RadioSelectHorizontal) quiz_1 = models.CharField( choices=["1 ronde", "10 rondes", "20 rondes", "50 rondes"], widget=widgets.RadioSelect) quiz_2 = models.CharField( choices=["1 eurocent", "2 eurocent", "5 eurocent", "10 eurocent"], widget=widgets.RadioSelect) quiz_3 = models.CharField( choices=["2 punten", "12 punten", "22 punten", "32 punten"], widget=widgets.RadioSelect) quiz_4 = models.CharField( choices=["2 punten", "3 punten", "6 punten", "9 punten"], widget=widgets.RadioSelect) quiz_5 = models.CharField( choices=["30 seconden", "60 seconden", "90 seconden", "120 seconden"], widget=widgets.RadioSelect)