from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random as random author = 'Your name here' doc = """ Your app description """ def make_likert_scale(choices,label=''): return models.IntegerField( choices=choices, label=label, widget=widgets.RadioSelectHorizontal, #blank=True ) class Constants(BaseConstants): name_in_url = 'default_vignettes' players_per_group = None num_rounds = 3 ordering = ['ABC','ACB','BAC','BCA','CAB','CBA'] default_treatment = ['bank','state'] likert_input = [[1, ''], [2, ''], [3, ''], [4, ''], [5, ''], [6, ''], [7, ''], [8, '']] class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): # Establishes task ordering & Incentives for Math Task if self.round_number == 1: p.participant.vars['order_vignettes'] = random.choice(Constants.ordering) p.participant.vars['default_treatment'] = random.choice(Constants.default_treatment) p.order_vignettes = p.participant.vars['order_vignettes'] p.default_treatment = p.participant.vars['default_treatment'] class Group(BaseGroup): pass class Player(BasePlayer): # Order within-subject order_vignettes = models.StringField() # Treatment between-subject default_treatment = models.StringField() ######## Flight Situation ################################ flight_random = make_likert_scale(choices=Constants.likert_input, label='Es ist Zufall, dass der Smart-Tarif vorausgewählt ist.') flight_best_choice = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, weil Eurowings denkt, dass \ der Smart-Tarif für den typischen Kunden die beste Wahl ist.') flight_max_profits = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, um die Gewinne von Eurowings zu erhöhen.') ####################################################### ########## Insurance Situation ################################ insurance_random = make_likert_scale(choices=Constants.likert_input, label='Es ist Zufall, dass das Auslandskomfortpaket vorausgewählt \ ist und die Fahrerschutzversicherung nicht.') insurance_best_choice = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, weil der ADAC denkt, dass \ diese Kombination von Zusatzpaketen für den typischen Kunden die beste Wahl ist.') insurance_max_profits = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, um die Gewinne des ADAC zu erhöhen.') ######################################################### ########## Garbage Situation ################################ garbage_random = make_likert_scale(choices=Constants.likert_input, label='Es ist Zufall, dass die 80-Liter-Tonne vorausgewählt ist.') garbage_best_choice = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, weil die Stadtwerke denken, dass \ die 80-Liter-Tonne für den typischen Kunden die beste Wahl ist.') garbage_max_profits = make_likert_scale(choices=Constants.likert_input, label='Die Vorauswahl wurde getroffen, um die Gewinne der Stadtwerke zu erhöhen.') ######################################################### ########## Portfolio Situation ########################## portfolio_own_choice = models.BooleanField(choices = [[True,'Ja'],[False, 'Nein']], label='Würden Sie sich für das vorausgewählte Portfolio entscheiden?', widget=widgets.RadioSelectHorizontal) portfolio_other_choice_prob = make_likert_scale(choices=Constants.likert_input, label='Wie wahrscheinlich schätzen Sie ist es, dass sich andere Menschen für das vorausgewählte \ Portfolio entscheiden?') portfolio_best_choice = make_likert_scale(choices=Constants.likert_input) portfolio_max_profits = make_likert_scale(choices=Constants.likert_input) ########################################################### ######### Financial Literacy (Big Three) ############################## financial_literacy_1 = models.IntegerField( choices=[[1,'Weniger als 102€'],[2,'Genau 102€'],[3,'Mehr als 102€']], label='Angenommen Sie haben 100 Euro Guthaben auf Ihrem Sparkonto. \ Dieses Guthaben wird mit 2% pro Jahr verzinst, und Sie lassen es 5 Jahre auf diesem Konto. \ Was meinen Sie: Wie viel Guthaben weist Ihr Sparkonto nach 5 Jahren auf?', widget=widgets.RadioSelect, #blank=True ) financial_literacy_2 = models.IntegerField( choices=[[1,'Genauso viel'],[2,'Mehr'],[3,'Weniger']], label='Angenommen, die Verzinsung Ihres Sparkontos beträgt 1% pro Jahr und die Inflationsrate beträgt 2% pro Jahr. \ Was glauben Sie: Werden Sie nach einem Jahr mit dem Guthaben des Sparkontos genauso viel, mehr oder weniger als heute kaufen können?', widget=widgets.RadioSelect, #blank=True ) financial_literacy_3 = models.IntegerField( choices=[[1,'Wahr'],[0,'Falsch'],[2,'Weiß nicht']], label='Ist die folgende Aussage richtig oder falsch? \ „Die Anlage in einer einzelnen Aktie bietet in der Regel einen sichereren Gewinn als die Anlage in einem Aktienfonds.“', widget=widgets.RadioSelect, #blank=True ) ########################################################### ######### Experience Stocks ############################### ########################################################### ######### Risk ############################################ ###########################################################