from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import copy author = 'Laurenz' doc = """ This is the second part. All templates are randomised. """ class Constants(BaseConstants): name_in_url = 'part_2' players_per_group = None num_rounds = 1 class Group(BaseGroup): pass class Player(BasePlayer): # Treatment indicator for list experiment list_treatment = models.StringField() # Party preference vote = models.StringField(widget=widgets.RadioSelect, label="Welche Partei würden Sie wählen, falls am kommenden Sonntag Bundestagswahl wäre?", choices=[ "CDU/CSU", "AfD", "SPD", "Bündnis 90/Die Grünen", "FDP", "Die Linke", "Sonstige", "Ich würde mich bei der Wahl enthalten"]) donation = models.StringField(widget=widgets.RadioSelect, label="An welche Partei soll Ihre Spende gehen?", choices=[ "CDU/CSU", "SPD","AfD", "FDP", "Die Linke", "Bündnis 90/Die Grünen"]) representation_party = models.StringField(widget=widgets.RadioSelect, label="Welche der folgenden Parteien versucht am ehesten den Willen des durchschnittlichen Bürgers durchzusetzten?", choices=[ "CDU/CSU", "SPD","AfD", "FDP", "Die Linke", "Bündnis 90/Die Grünen"]) competence_party = models.StringField(widget=widgets.RadioSelect, label="Welche Partei halten Sie, abgesehen von der inhaltlichen Ausrichtung, für am kompetentesten?", choices=["CDU/CSU", "SPD","AfD", "FDP", "Die Linke", "Bündnis 90/Die Grünen"]) scalometer_cdu = models.StringField(widget=widgets.RadioSelect, label="CDU/CSU", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) scalometer_afd = models.StringField(widget=widgets.RadioSelect, label="AfD", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) scalometer_spd = models.StringField(widget=widgets.RadioSelect, label="SPD", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) scalometer_gruene = models.StringField(widget=widgets.RadioSelect, label="Bündnis 90/Die Grünen", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) scalometer_fdp = models.StringField(widget=widgets.RadioSelect, label="FDP", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) scalometer_linke = models.StringField(widget=widgets.RadioSelect, label="Die Linke", choices=["+5 halte sehr viel von dieser Partei","+4","+3","+2","+1","0","-1","-2","-3","-4","-5 halte überhaupt nichts von dieser Partei" ]) # Trust questions distrust_parliament = models.StringField(widget=widgets.RadioSelect, label="dem Bundestag?", choices=[ ["5", "vertraue ich überhaupt nicht"], ["4", "vertraue ich eher nicht"], ["3", "vertraue ich teilweise"], ["2", "vertraue ich weitgehend"], ["1", "vertraue ich voll und ganz"] ]) #distrust_unions = models.StringField(widget=widgets.RadioSelect, # label="den Gewerkschaften?", # choices=[ ["5", "vertraue ich überhaupt nicht"], ["4", "vertraue ich eher nicht"], ["3", "vertraue ich teilweise"], ["2", "vertraue ich weitgehend"], ["1", "vertraue ich voll und ganz"] ]) #trust_banks = models.StringField(widget=widgets.RadioSelect, # label="den Banken?", # choices=[ ["1", "vertraue ich überhaupt nicht"], ["2", "vertraue ich eher nicht"], ["3", "vertraue ich teilweise"], ["4", "vertraue ich weitgehend"], ["5", "vertraue ich voll und ganz"] ]) distrust_government = models.StringField(widget=widgets.RadioSelect, label="der Regierung?", choices=[ ["5", "vertraue ich überhaupt nicht"], ["4", "vertraue ich eher nicht"], ["3", "vertraue ich teilweise"], ["2", "vertraue ich weitgehend"], ["1", "vertraue ich voll und ganz"] ]) # Satisfaction with democracy dissatisfied_democracy_germany = models.StringField(widget=widgets.RadioSelect, label="Wie zufrieden oder unzufrieden sind Sie – alles in allem – mit der Demokratie, so wie sie in Deutschland besteht?", choices=[ ["1", "sehr zufrieden"], ["2", "ziemlich zufrieden"], ["3", "nicht sehr zufrieden"], ["4", "überhaupt nicht zufrieden"] ]) democracy_not_best_system = models.StringField(widget=widgets.RadioSelect, label="Die Demokratie mag zwar viele Probleme haben, aber sie ist besser als jede andere Staatsform.", choices=[ ["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"] ]) less_protection_for_politicians = models.StringField(widget=widgets.RadioSelect, label="Es muss mehr getan werden um Politiker vor Angriffen zu schützen.", choices=[ ["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"] ]) # Populist attitudes ## Populist attitudes by Akkerman et al. (2014) mps_must_follow_people = models.StringField(widget=widgets.RadioSelect, label="Die Abgeordneten des Deutschen Bundestags müssen dem Willen des Volkes Folge leisten.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) people_should_decide = models.StringField(widget=widgets.RadioSelect, label="Das Volk, und nicht die Politikerinnen und Politiker, sollten die wichtigsten politischen Entscheidungen treffen.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) elite_vs_people = models.StringField(widget=widgets.RadioSelect, label="Die politischen Unterschiede zwischen Eliten und dem Volk sind größer als die Unterschiede innerhalb des Volkes.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) citizens_are_better_representatives = models.StringField(widget=widgets.RadioSelect, label="Bürgerinnen und Bürger würden besser meine Interessen vertreten als Berufspolitikerinnen und -politiker.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) politicians_just_talk = models.StringField(widget=widgets.RadioSelect, label="Die Politikerinnen und Politiker reden zu viel und machen zu wenig.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) compromise_bad = models.StringField(widget=widgets.RadioSelect, label="Was in der Politik Kompromiss genannt wird, ist in Wirklichkeit nur ein Verrat von Prinzipien.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) ## Other populist attitudes majority_before_minority = models.StringField(widget=widgets.RadioSelect, label="Der Wille der Mehrheit sollte immer Vorrang haben, auch gegenüber den Rechten von Minderheiten.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) referendum = models.StringField(widget=widgets.RadioSelect, label="Bürger/innen sollten einen bindenden Volksentscheid auf Bundesebene herbeiführen können.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) populists_must_rise = models.StringField(widget=widgets.RadioSelect, label="In Deutschland müssen Parteien mehr Einfluss gewinnen die sich in erster Linie nach dem Willen des Volkes richten.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) violence_if_necessary = models.StringField(widget=widgets.RadioSelect, label="Wenn andere Mittel nicht ausreichen müssen Politiker mit Gewalt dazu gezwungen werden dem Willen des Volkes folge zu leisten.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) #strong_leader_good = models.StringField(widget=widgets.RadioSelect, # label="Ein starker Führer ist gut für Deutschland, auch wenn er sich nicht immer an die Regeln hält, um die Dinge voranzubringen.", # choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) # Elitism and Representation ## Elitism index by Akkerman et al. (2014) manichean_view = models.StringField(widget=widgets.RadioSelect, label="Politik ist letztlich ein Kampf zwischen Gut und Böse.", choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) politicians_should_lead = models.StringField(widget=widgets.RadioSelect, label="Politikerinnen und Politiker sollten das Volk führen, anstatt ihm zu folgen.", choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) businesmen_should_lead = models.StringField(widget=widgets.RadioSelect, label="Deutschland würde besser regiert werden, wenn man wichtige Entscheidungen erfolgreichen Geschäftsleuten überlassen würde.", choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) experts_should_lead = models.StringField(widget=widgets.RadioSelect, label="Deutschland würde besser regiert werden, wenn man wichtige Entscheidungen unabhängigen Experten überlassen würde.", choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) ## Representation laws_not_representative = models.StringField(widget=widgets.RadioSelect, label="Die Gesetzgebung spiegelt die Interessen der Mehrheit der Bevölkerung wider.", choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) #loose_citizen_trust = models.StringField(widget=widgets.RadioSelect, # label="Unsere Demokratie ist dabei, das Vertrauen der Bürger/innen zu verlieren.", # choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) representation_intention_demand = models.StringField(widget=widgets.RadioSelect, label="Wie sollte Ihrer Meinung nach eine Bundestagsabgeordnete bzw. ein Bundestagsabgeordneter abstimmen, wenn die eigene Meinung zu einem Thema nicht mit der Meinung der eigenen Wählerinnen und Wähler übereinstimmt?", choices=[ ["0", "sollte entsprechend der eigenen Meinung abstimmen"], ["1", "sollte entsprechend der Meinung der Wähler/innen abstimmen"]]) citizens_smart = models.StringField(widget=widgets.RadioSelect, label="Die meisten Bürgerinnen und Bürger sind in der Lage zu beurteilen welche Politikmaßnahmen sinnvoll sind.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) mps_smart = models.StringField(widget=widgets.RadioSelect, label="Die meisten Politikerinnen und Politiker sind in der Lage zu beurteilen welche Politikmaßnahmen sinnvoll sind.", choices=[ ["1", "stimme überhaupt nicht zu"], ["2", "stimme eher nicht zu"], ["3", "teils/teils"], ["4", "stimme eher zu"], ["5", "stimme voll und ganz zu"]]) #not_enough_opps_to_participate = models.StringField(widget=widgets.RadioSelect, # label="Die Bürger/innen haben genug Möglichkeiten, an politischen Entscheidungen mitzuwirken.", # choices=[["1", "stimme voll und ganz zu"], ["2", "stimme eher zu"], ["3", "teils/teils"], ["4", "stimme eher nicht zu"], ["5", "stimme überhaupt nicht zu"]]) # List experiment list_experiment_number_agree_5 = models.IntegerField(label="", min=0, max=5) list_experiment_number_agree_6 = models.IntegerField(label="", min=0, max=6) class Subsession(BaseSubsession): def creating_session(self): import itertools list_treatments = itertools.cycle(['list_treatment_5', 'list_treatment_6']) for p in self.get_players(): p.list_treatment = next(list_treatments) p.participant.vars["list_treatment"] = p.list_treatment