from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random author = 'Colton Cronin' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'belief_elicitation' players_per_group = None num_rounds = 8 task1_option1='If the random number is 1, you have a 75% chance of winning $10. If the random number is 2, 3, 4, 5, or 6, you have a 75% Chance of Winning $10.' task1_option2='If the random number is 1, you have a 31% chance of winning $10. If the random number is 2, 3, 4, 5, or 6, you have a 98% Chance of Winning $10.' task3_roll56 = '$10 if a random dice roll is 5 or 6' task3_roll1234 = '$10 if a random dice roll is 1, 2, 3, or 4' task3_roll246 = '$10 if a random dice roll is 2, 4, or 6' task3_roll135 = '$10 if a random dice roll is 1, 3, or 5' num_pages = 12 class Subsession(BaseSubsession): dice = models.IntegerField() def creating_session(self): if self.round_number == 1: import itertools treatments = itertools.cycle(['T2BQSR50First','T1ROE50First','T2BQSR50Last','T1ROE50Last','T3BQSR50First','T4ROE50First','T3BQSR50Last','T4ROE50Last','T4BQSR50First','T3ROE50First','T4BQSR50Last','T3ROE50Last','T1BQSR50First','T2ROE50First','T1BQSR50Last','T2ROE50Last']) for p in self.get_players(): treatment = next(treatments) p.participant.vars['treatment'] = treatment order_dict={'ID':1,'Introduction':1,'LotteryInstructions':1, 'Lottery1':0,'Lottery2':0, #'FoldedInstructions':0,'Folded1':0,'Folded2':0,'Folded3':0, 'FullListInstructions':0,'Full1':0,'Full2':0,'Full3':0,'Full4':0, 'SliderInstructions':0,'Slider1':0,'Slider2':0,'Slider3':0,'Slider4':0, 'Payment':8,'Final':8 } lottery_order=[2,3] random.shuffle(lottery_order) order_dict['Lottery1']=lottery_order[0] order_dict['Lottery2']=lottery_order[1] if treatment == 'T1BQSR50First': order_dict['SliderInstructions']=4 order_dict['Slider1']=0 order_dict['Slider2']=5 order_dict['Slider3']=4 order_dict['Slider4']=0 order_dict['FullListInstructions']=6 order_dict['Full1']=7 order_dict['Full2']=0 order_dict['Full3']=0 order_dict['Full4']=6 if treatment == 'T1BQSR50Last': order_dict['SliderInstructions']=4 order_dict['Slider1']=0 order_dict['Slider2']=4 order_dict['Slider3']=5 order_dict['Slider4']=0 order_dict['FullListInstructions']=6 order_dict['Full1']=6 order_dict['Full2']=0 order_dict['Full3']=0 order_dict['Full4']=7 if treatment == 'T1ROE50First': order_dict['SliderInstructions']=6 order_dict['Slider1']=0 order_dict['Slider2']=7 order_dict['Slider3']=6 order_dict['Slider4']=0 order_dict['FullListInstructions']=4 order_dict['Full1']=5 order_dict['Full2']=0 order_dict['Full3']=0 order_dict['Full4']=4 if treatment == 'T1ROE50Last': order_dict['SliderInstructions']=6 order_dict['Slider1']=0 order_dict['Slider2']=6 order_dict['Slider3']=7 order_dict['Slider4']=0 order_dict['FullListInstructions']=4 order_dict['Full1']=4 order_dict['Full2']=0 order_dict['Full3']=0 order_dict['Full4']=5 if treatment == 'T2BQSR50First': order_dict['SliderInstructions']=4 order_dict['Slider1']=5 order_dict['Slider2']=0 order_dict['Slider3']=4 order_dict['Slider4']=0 order_dict['FullListInstructions']=6 order_dict['Full1']=0 order_dict['Full2']=7 order_dict['Full3']=0 order_dict['Full4']=6 if treatment == 'T2BQSR50Last': order_dict['SliderInstructions']=4 order_dict['Slider1']=4 order_dict['Slider2']=0 order_dict['Slider3']=5 order_dict['Slider4']=0 order_dict['FullListInstructions']=6 order_dict['Full1']=0 order_dict['Full2']=6 order_dict['Full3']=0 order_dict['Full4']=7 if treatment == 'T2ROE50First': order_dict['SliderInstructions']=6 order_dict['Slider1']=7 order_dict['Slider2']=0 order_dict['Slider3']=6 order_dict['Slider4']=0 order_dict['FullListInstructions']=4 order_dict['Full1']=0 order_dict['Full2']=5 order_dict['Full3']=0 order_dict['Full4']=4 if treatment == 'T2ROE50Last': order_dict['SliderInstructions']=6 order_dict['Slider1']=6 order_dict['Slider2']=0 order_dict['Slider3']=7 order_dict['Slider4']=0 order_dict['FullListInstructions']=4 order_dict['Full1']=0 order_dict['Full2']=4 order_dict['Full3']=0 order_dict['Full4']=5 if treatment == 'T3BQSR50First': order_dict['SliderInstructions']=4 order_dict['Slider1']=0 order_dict['Slider2']=5 order_dict['Slider3']=0 order_dict['Slider4']=4 order_dict['FullListInstructions']=6 order_dict['Full1']=7 order_dict['Full2']=0 order_dict['Full3']=6 order_dict['Full4']=0 if treatment == 'T3BQSR50Last': order_dict['SliderInstructions']=4 order_dict['Slider1']=0 order_dict['Slider2']=4 order_dict['Slider3']=0 order_dict['Slider4']=5 order_dict['FullListInstructions']=6 order_dict['Full1']=6 order_dict['Full2']=0 order_dict['Full3']=7 order_dict['Full4']=0 if treatment == 'T3ROE50First': order_dict['SliderInstructions']=6 order_dict['Slider1']=0 order_dict['Slider2']=7 order_dict['Slider3']=0 order_dict['Slider4']=6 order_dict['FullListInstructions']=4 order_dict['Full1']=5 order_dict['Full2']=0 order_dict['Full3']=4 order_dict['Full4']=0 if treatment == 'T3ROE50Last': order_dict['SliderInstructions']=6 order_dict['Slider1']=0 order_dict['Slider2']=6 order_dict['Slider3']=0 order_dict['Slider4']=7 order_dict['FullListInstructions']=4 order_dict['Full1']=4 order_dict['Full2']=0 order_dict['Full3']=5 order_dict['Full4']=0 if treatment == 'T4BQSR50First': order_dict['SliderInstructions']=4 order_dict['Slider1']=5 order_dict['Slider2']=0 order_dict['Slider3']=0 order_dict['Slider4']=4 order_dict['FullListInstructions']=6 order_dict['Full1']=0 order_dict['Full2']=7 order_dict['Full3']=6 order_dict['Full4']=0 if treatment == 'T4BQSR50Last': order_dict['SliderInstructions']=4 order_dict['Slider1']=4 order_dict['Slider2']=0 order_dict['Slider3']=0 order_dict['Slider4']=5 order_dict['FullListInstructions']=6 order_dict['Full1']=0 order_dict['Full2']=6 order_dict['Full3']=7 order_dict['Full4']=0 if treatment == 'T4ROE50First': order_dict['SliderInstructions']=6 order_dict['Slider1']=7 order_dict['Slider2']=0 order_dict['Slider3']=0 order_dict['Slider4']=6 order_dict['FullListInstructions']=4 order_dict['Full1']=0 order_dict['Full2']=5 order_dict['Full3']=4 order_dict['Full4']=0 if treatment == 'T4ROE50Last': order_dict['SliderInstructions']=6 order_dict['Slider1']=6 order_dict['Slider2']=0 order_dict['Slider3']=0 order_dict['Slider4']=7 order_dict['FullListInstructions']=4 order_dict['Full1']=0 order_dict['Full2']=4 order_dict['Full3']=5 order_dict['Full4']=0 #treatment_order=[4,5,6] #random.shuffle(treatment_order) #if treatment == 'FoldedLists': # order_dict['FoldedInstructions']=4 # order_dict['Folded1']=treatment_order[0] # order_dict['Folded2']=treatment_order[1] # order_dict['Folded3']=treatment_order[2] #if treatment == 'FullLists': # order_dict['FullListInstructions']=4 # order_dict['Full1']=treatment_order[0] # order_dict['Full2']=treatment_order[1] # order_dict['Full3']=treatment_order[2] #if treatment == 'Sliders': # order_dict['SliderInstructions']=4 # order_dict['Slider1']=treatment_order[0] # order_dict['Slider2']=treatment_order[1] # order_dict['Slider3']=treatment_order[2] p.participant.vars['task_rounds'] = order_dict p.participant.vars['page_num'] = 1 p.participant.vars['lottery1order'] = random.randint(0, 1) p.participant.vars['lottery2order'] = random.randint(0, 1) class Group(BaseGroup): pass class Player(BasePlayer): prolific_id = models.StringField(label="Please enter your Prolific ID:") payment = models.IntegerField() lottery1=models.IntegerField() lottery2=models.IntegerField() # folded1_1234=models.IntegerField() # folded1_56=models.IntegerField() # folded2_1=models.IntegerField() # folded2_23456=models.IntegerField() # folded3_246=models.IntegerField() # folded3_135=models.IntegerField() #full1_1234=models.IntegerField() full1_56=models.IntegerField(blank=True) #full2_1=models.IntegerField() full2_12345=models.IntegerField(blank=True) full3_246=models.IntegerField(blank=True) full4_135=models.IntegerField(blank=True) def full1_56_error_message(self, value): print('value is', value) if value is None: return 'Please rank the Unordered Option on the left in the Pre-ordered List on the right to proceed' def full2_12345_error_message(self, value): print('value is', value) if value is None: return 'Please rank the Unordered Option on the left in the Pre-ordered List on the right to proceed' def full3_246_error_message(self, value): print('value is', value) if value is None: return 'Please rank the Unordered Option on the left in the Pre-ordered List on the right to proceed' def full4_135_error_message(self, value): print('value is', value) if value is None: return 'Please rank the Unordered Option on the left in the Pre-ordered List on the right to proceed' slider1_56=models.IntegerField() slider2_12345=models.IntegerField() slider3_246=models.IntegerField() slider4_135=models.IntegerField() # task1 = models.FloatField() # task3_roll1234 = models.FloatField() # task3_roll56 = models.FloatField() # task4_roll1234 = models.FloatField() # task4_roll56 = models.FloatField() # task5_roll246 = models.FloatField() # task5_roll135 = models.FloatField() randnumA = models.IntegerField(blank=True) randnumB = models.IntegerField(blank=True) payment_task = models.StringField(blank=True) def prolific_id_error_message(player,value): if not ( len(value)==24 and value.isalnum() ): return "Your ID should be 24 characters long and consist of numbers or letters."