from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random import itertools import json import decimal author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'seatsurvey' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: for p in self.get_players(): p.distance_1 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_1 = random.choice(['Daytime', 'Red-eye']) p.price_1 = round((p.distance_1/.0019)*(0.1032+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_1b = c(random.choice([0, random.randrange(1, 5)])) p.price_1a = c(p.price_1b+random.randrange(1, 20)) p.legroom_1a = random.randrange(0, 2) p.legroom_1b = random.randrange(1,2) p.distance_2 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_2 = random.choice(['Daytime', 'Red-eye']) p.price_2 = round((p.distance_2/.0019)*(0.1032+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_2a = c(random.randrange(1, 5)) p.price_2b = c(p.price_2a+random.randrange(1, 5)) p.legroom_2a = random.randrange(0, 2) p.legroom_2b = p.legroom_2a p.distance_3 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_3 = random.choice(['Daytime', 'Red-eye']) p.price_3 = round((p.distance_3/.0019)*(0.1032+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_3a = c(random.randrange(0, 5)) p.price_3b = c(p.price_3a+random.randrange(0, 15)) p.legroom_3a = random.randrange(0, 2) p.legroom_3b = p.legroom_3a p.distance_4 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_4 = random.choice(['Daytime', 'Red-eye']) p.price_4 = round((p.distance_4/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_4a = c(random.randrange(10, 20)) p.price_4b = c(p.price_4a+random.randrange(30, 70)) p.legroom_4a = random.randrange(2, 4) p.legroom_4b = p.legroom_4a + random.randrange(0, 2) p.distance_5 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_5 = random.choice(['Daytime', 'Red-eye']) p.price_5 = round((p.distance_5/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_5b = c(random.choice([0, random.randrange(1, 10)])) p.price_5a = c(p.price_5b + random.randrange(30, 70)) p.legroom_5b = random.randrange(1, 2) p.legroom_5a = p.legroom_5b + random.randrange(2, 4) p.distance_6 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_6 = random.choice(['Daytime', 'Red-eye']) p.price_6 = round((p.distance_6/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_6b = c(random.choice([0, random.randrange(1, 5)])) p.price_6a = c(p.price_6b + random.randrange(0, 15)) p.legroom_6b = random.randrange(0, 2) p.legroom_6a = random.randrange(0, 2) p.distance_7 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_7 = random.choice(['Daytime', 'Red-eye']) p.price_7 = round((p.distance_7/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_7b = c(random.choice([0, random.randrange(1, 10)])) p.price_7a = c(p.price_7b + random.randrange(50, 200)) p.legroom_7b = random.randrange(0, 2) p.legroom_7a = p.legroom_7b + random.randrange(2, 4) p.distance_8 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_8 = random.choice(['Daytime', 'Red-eye']) p.price_8 = round((p.distance_8/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_8a = c(random.choice([0, random.randrange(1, 10)])) p.price_8b = c(p.price_8a + random.randrange(1,15)) p.legroom_8a = random.randrange(0, 2) p.legroom_8b = random.randrange(0, 2) p.distance_9 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_9 = random.choice(['Daytime', 'Red-eye']) p.price_9 = round((p.distance_9/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_9b = c(random.randrange(40, 90)) p.price_9a = c(p.price_9b + random.randrange(-30, -10)) p.legroom_9a = random.randrange(2, 3) p.legroom_9b = p.legroom_9a + random.randrange(2, 4) p.distance_10 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_10 = random.choice(['Daytime', 'Red-eye']) p.price_10 = round((p.distance_10/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_10a = c(random.randrange(0, 80)) p.price_10b = c(p.price_10a + random.randrange(0,10)) p.legroom_10a = random.randrange(4,6) p.legroom_10b = p.legroom_10a p.distance_11 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_11 = random.choice(['Daytime', 'Red-eye']) p.price_11 = round((p.distance_11/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_11b = c(random.choice([0, random.randrange(1, 10)])) p.price_11a = c(p.price_11b + random.randrange(30, 70)) p.legroom_11b = random.randrange(0, 2) p.legroom_11a = p.legroom_11b + random.randrange(1, 3) p.distance_12 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_12 = random.choice(['Daytime', 'Red-eye']) p.price_12 = round((p.distance_12/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_12b = c(random.choice([0, random.randrange(1, 5)])) p.price_12a = c(p.price_12b + random.randrange(0, 3)) p.legroom_12b = random.randrange(0, 2) p.legroom_12a = random.randrange(1, 2) p.distance_13 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_13 = random.choice(['Daytime', 'Red-eye']) p.price_13 = round((p.distance_13/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_13a = c(random.choice([0, random.randrange(1, 5)])) p.price_13b = p.price_13a + random.randrange(0,5) p.legroom_13a = random.randrange(1, 2) p.legroom_13b = p.legroom_13a p.distance_14 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_14 = random.choice(['Daytime', 'Red-eye']) p.price_14 = round((p.distance_14/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_14b = c(random.choice([0, random.randrange(1, 5)])) p.price_14a = c(p.price_14b + random.randrange(50, 200)) p.legroom_14a = random.randrange(4, 6) p.legroom_14b = random.randrange(1, 2) p.distance_15 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_15 = random.choice(['Daytime', 'Red-eye']) p.price_15 = round((p.distance_15/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_15a = c(random.randrange(0, 10)) p.price_15b = c(p.price_15a + random.randrange(5, 10)) p.legroom_15a = random.randrange(0, 2) p.legroom_15b = p.legroom_15a + random.randrange(1, 2) p.distance_16 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_16 = random.choice(['Daytime', 'Red-eye']) p.price_16 = round((p.distance_16/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_16b = c(random.choice([0, random.randrange(1, 10)])) p.price_16a = c(p.price_16b + random.randrange(30, 70)) p.legroom_16b = random.randrange(0, 2) p.legroom_16a = p.legroom_16b + random.randrange(1, 3) p.distance_17 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_17 = random.choice(['Daytime', 'Red-eye']) p.price_17 = round((p.distance_17/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_17b = c(random.choice([0, random.randrange(1, 5)])) p.price_17a = c(p.price_17b + random.randrange(1, 20)) p.legroom_17a = random.randrange(0, 2) p.legroom_17b = random.randrange(0, 3) p.distance_18 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_18 = random.choice(['Daytime', 'Red-eye']) p.price_18 = round((p.distance_18/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_18b = c(random.choice([0, random.randrange(1, 5)])) p.price_18a = c(p.price_18b + random.randrange(0, 2)) p.legroom_18b = random.randrange(0, 2) p.legroom_18a = random.randrange(1, 2) p.distance_19 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_19 = random.choice(['Daytime', 'Red-eye']) p.price_19 = round((p.distance_19/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_19a = c(random.randrange(20, 40)) p.price_19b = c(p.price_19a + random.randrange(1, 10)) p.legroom_19a = random.randrange(2, 3) p.legroom_19b = p.legroom_19a + random.randrange(1, 2) p.distance_20 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_20 = random.choice(['Daytime', 'Red-eye']) p.price_20 = round((p.distance_20/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_20b = c(random.choice([0, random.randrange(1, 10)])) p.price_20a = c(p.price_20b + random.randrange(0, 6)) p.legroom_20b = random.randrange(0, 2) p.legroom_20a = random.randrange(1, 2) p.distance_21 = round(float(decimal.Decimal(random.randrange(75, 550))/100),1) p.time_21 = random.choice(['Daytime', 'Red-eye']) p.price_21 = round((p.distance_21/.0019)*(0.1332+float(decimal.Decimal(random.randrange(-7, 7))/200)),0) p.price_21b = c(random.choice([0, random.randrange(1, 20)])) p.price_21a = c(p.price_21b + random.randrange(0, 5)) p.legroom_21b = random.randrange(0, 2) p.legroom_21a = p.legroom_21b + random.randrange(0, 1) from .pages import initial_page_sequence ini = [i.__name__ for i in initial_page_sequence] for p in self.get_players(): pb = ini.copy() random.shuffle(pb) p.page_sequence = json.dumps(pb) class Group(BaseGroup): pass class Player(BasePlayer): page_sequence = models.StringField() choice1 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) choice2 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_1 = models.FloatField() time_1 = models.StringField() price_1 = models.CurrencyField() row_1a = models.IntegerField(initial=13) row_1b = models.IntegerField(initial=27) col_1a = models.StringField(initial='E') col_1b = models.StringField(initial='E') price_1a = models.CurrencyField() price_1b = models.CurrencyField() legroom_1a = models.IntegerField() legroom_1b = models.IntegerField() distance_2 = models.FloatField() time_2 = models.StringField() price_2 = models.CurrencyField() row_2a = models.IntegerField(initial=10) row_2b = models.IntegerField(initial=10) col_2a = models.StringField(initial='E') col_2b = models.StringField(initial='F') price_2a = models.CurrencyField() price_2b = models.CurrencyField() legroom_2a = models.IntegerField() legroom_2b = models.IntegerField() distance_3 = models.FloatField() time_3 = models.StringField() price_3 = models.CurrencyField() row_3a = models.IntegerField(initial=13) row_3b = models.IntegerField(initial=13) col_3a = models.StringField(initial='A') col_3b = models.StringField(initial='C') price_3a = models.CurrencyField() price_3b = models.CurrencyField() legroom_3a = models.IntegerField() legroom_3b = models.IntegerField() choice3 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_4 = models.FloatField() time_4 = models.StringField() price_4 = models.CurrencyField() row_4a = models.IntegerField(initial=14) row_4b = models.IntegerField(initial=8) col_4a = models.StringField(initial='F') col_4b = models.StringField(initial='E') price_4a = models.CurrencyField() price_4b = models.CurrencyField() legroom_4a = models.IntegerField() legroom_4b = models.IntegerField() choice4 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_5 = models.FloatField() time_5 = models.StringField() price_5 = models.CurrencyField() row_5a = models.IntegerField(initial=5) row_5b = models.IntegerField(initial=21) col_5a = models.StringField(initial='F') col_5b = models.StringField(initial='C') price_5a = models.CurrencyField() price_5b = models.CurrencyField() legroom_5a = models.IntegerField() legroom_5b = models.IntegerField() choice_5 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_6 = models.FloatField() time_6 = models.StringField() price_6 = models.CurrencyField() row_6a = models.IntegerField(initial=12) row_6b = models.IntegerField(initial=27) col_6a = models.StringField(initial='B') col_6b = models.StringField(initial='D') price_6a = models.CurrencyField() price_6b = models.CurrencyField() legroom_6a = models.IntegerField() legroom_6b = models.IntegerField() choice_6 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_7 = models.FloatField() time_7 = models.StringField() price_7 = models.CurrencyField() row_7a = models.IntegerField(initial=3) row_7b = models.IntegerField(initial=9) col_7a = models.StringField(initial='C') col_7b = models.StringField(initial='C') price_7a = models.CurrencyField() price_7b = models.CurrencyField() legroom_7a = models.IntegerField() legroom_7b = models.IntegerField() choice_7 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_8 = models.FloatField() time_8 = models.StringField() price_8 = models.CurrencyField() row_8a = models.IntegerField(initial=25) row_8b = models.IntegerField(initial=22) col_8a = models.StringField(initial='E') col_8b = models.StringField(initial='B') price_8a = models.CurrencyField() price_8b = models.CurrencyField() legroom_8a = models.IntegerField() legroom_8b = models.IntegerField() choice_8 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_9 = models.FloatField() time_9 = models.StringField() price_9 = models.CurrencyField() row_9a = models.IntegerField(initial=8) row_9b = models.IntegerField(initial=4) col_9a = models.StringField(initial='D') col_9b = models.StringField(initial='C') price_9a = models.CurrencyField() price_9b = models.CurrencyField() legroom_9a = models.IntegerField() legroom_9b = models.IntegerField() choice_9 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_10 = models.FloatField() time_10 = models.StringField() price_10 = models.CurrencyField() row_10a = models.IntegerField(initial=3) row_10b = models.IntegerField(initial=1) col_10a = models.StringField(initial='F') col_10b = models.StringField(initial='A') price_10a = models.CurrencyField() price_10b = models.CurrencyField() legroom_10a = models.IntegerField() legroom_10b = models.IntegerField() choice_10 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_11 = models.FloatField() time_11 = models.StringField() price_11 = models.CurrencyField() row_11a = models.IntegerField(initial=6) row_11b = models.IntegerField(initial=9) col_11a = models.StringField(initial='B') col_11b = models.StringField(initial='C') price_11a = models.CurrencyField() price_11b = models.CurrencyField() legroom_11a = models.IntegerField() legroom_11b = models.IntegerField() choice_11 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_12 = models.FloatField() time_12 = models.StringField() price_12 = models.CurrencyField() row_12a = models.IntegerField(initial=25) row_12b = models.IntegerField(initial=21) col_12a = models.StringField(initial='A') col_12b = models.StringField(initial='F') price_12a = models.CurrencyField() price_12b = models.CurrencyField() legroom_12a = models.IntegerField() legroom_12b = models.IntegerField() choice_12 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_13 = models.FloatField() time_13 = models.StringField() price_13 = models.CurrencyField() row_13a = models.IntegerField(initial=11) row_13b = models.IntegerField(initial=10) col_13a = models.StringField(initial='E') col_13b = models.StringField(initial='B') price_13a = models.CurrencyField() price_13b = models.CurrencyField() legroom_13a = models.IntegerField() legroom_13b = models.IntegerField() choice_13 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_14 = models.FloatField() time_14 = models.StringField() price_14 = models.CurrencyField() row_14a = models.IntegerField(initial=3) row_14b = models.IntegerField(initial=23) col_14a = models.StringField(initial='F') col_14b = models.StringField(initial='F') price_14a = models.CurrencyField() price_14b = models.CurrencyField() legroom_14a = models.IntegerField() legroom_14b = models.IntegerField() choice_14 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_15 = models.FloatField() time_15 = models.StringField() price_15 = models.CurrencyField() row_15a = models.IntegerField(initial=16) row_15b = models.IntegerField(initial=15) col_15a = models.StringField(initial='A') col_15b = models.StringField(initial='A') price_15a = models.CurrencyField() price_15b = models.CurrencyField() legroom_15a = models.IntegerField() legroom_15b = models.IntegerField() choice_15 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_16 = models.FloatField() time_16 = models.StringField() price_16 = models.CurrencyField() row_16a = models.IntegerField(initial=8) row_16b = models.IntegerField(initial=9) col_16a = models.StringField(initial='D') col_16b = models.StringField(initial='F') price_16a = models.CurrencyField() price_16b = models.CurrencyField() legroom_16a = models.IntegerField() legroom_16b = models.IntegerField() choice_16 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_17 = models.FloatField() time_17 = models.StringField() price_17 = models.CurrencyField() row_17a = models.IntegerField(initial=26) row_17b = models.IntegerField(initial=9) col_17a = models.StringField(initial='F') col_17b = models.StringField(initial='A') price_17a = models.CurrencyField() price_17b = models.CurrencyField() legroom_17a = models.IntegerField() legroom_17b = models.IntegerField() choice_17 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_18 = models.FloatField() time_18 = models.StringField() price_18 = models.CurrencyField() row_18a = models.IntegerField(initial=13) row_18b = models.IntegerField(initial=17) col_18a = models.StringField(initial='D') col_18b = models.StringField(initial='C') price_18a = models.CurrencyField() price_18b = models.CurrencyField() legroom_18a = models.IntegerField() legroom_18b = models.IntegerField() choice_18 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_19 = models.FloatField() time_19 = models.StringField() price_19 = models.CurrencyField() row_19a = models.IntegerField(initial=8) row_19b = models.IntegerField(initial=6) col_19a = models.StringField(initial='A') col_19b = models.StringField(initial='E') price_19a = models.CurrencyField() price_19b = models.CurrencyField() legroom_19a = models.IntegerField() legroom_19b = models.IntegerField() choice_19 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_20 = models.FloatField() time_20 = models.StringField() price_20 = models.CurrencyField() row_20a = models.IntegerField(initial=11) row_20b = models.IntegerField(initial=16) col_20a = models.StringField(initial='A') col_20b = models.StringField(initial='F') price_20a = models.CurrencyField() price_20b = models.CurrencyField() legroom_20a = models.IntegerField() legroom_20b = models.IntegerField() choice_20 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal) distance_21 = models.FloatField() time_21 = models.StringField() price_21 = models.CurrencyField() row_21a = models.IntegerField(initial=10) row_21b = models.IntegerField(initial=23) col_21a = models.StringField(initial='A') col_21b = models.StringField(initial='B') price_21a = models.CurrencyField() price_21b = models.CurrencyField() legroom_21a = models.IntegerField() legroom_21b = models.IntegerField() choice_21 = models.StringField(choices=['Seat A','Seat B'], widget=widgets.RadioSelectHorizontal)