from otree.api import * doc = """ Fragebogen für das WB Social Norms Experiment 3 Treatments: control, T1 und T2 """ def creating_session(subsession): subsession.TREATMENT = 'T1' #für Testzwecke manuell T1 und T2 eingeben für weitere Treatments if 'wb_treatment' in subsession.session.config: #nur relevant wenn man questionnaire als Teil des WB Experiments nimmt subsession.TREATMENT = subsession.session.config['wb_treatment'] subsession.STANDALONE = False class C(BaseConstants): NAME_IN_URL = 'postex_questionnaire' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 #TREATMENT_NAMES = ['Control', 'T1','T2'] Personen = [ dict(name='Kinder', label="Kinder"), dict(name='K_M', label="Mädchen"), dict(name='K_J', label="Jungen"), dict(name='Fr', label="Frauen"), dict(name='Mn', label="Männer"), dict(name='PersonSonstige', label="Sonstige Empfängergruppe"), ] Region = [ dict(name='Afrika_ns', label="Afrika nördlich der Sahara"), dict(name='Afrika_s', label="Afrika südlich der Sahara"), dict(name='Asien', label="Süd- und Südostasien"), dict(name='LateinA', label="Latein- und Mittelamerika"), dict(name='NordA', label="Nordamerika"), dict(name='Osteuropa', label="Osteuropa"), dict(name='Westeuropa', label="Westeuropa"), dict(name='RegionSonstige', label="Sonstige Region"), ] Projekte = [ dict(name='H_Kinder', label="Hilfsprojekte für Kinder und Bildung (z.B UNICEF, SOS Kinderdörfer, Save the Children)"), dict(name='H_Hunger', label="Hilfsprojekte gegen Hunger und Armut (z.B. SOS Kinderdörfer, Gemeinsam für Afrika, Welthungerhilfe)"), dict(name='H_Frieden', label="Hilfsprojekte für Frieden und Schlichtung"), dict(name='H_Tiere', label="Hilfsprojekte für Tiere / Umwelt (z.B. Greenpeace, WWF)"), dict(name='HSonstige', label="Sonstige Hilfsprojekte"), ] class Subsession(BaseSubsession): TREATMENT = models.StringField(initial='Control') STANDALONE = models.BooleanField(initial=True) class Group(BaseGroup): pass class Player(BasePlayer): #hier alle Variablen aufführen #zur Steuerung roletypeA = models.BooleanField(initial=True) spieler1 = models.BooleanField(initial=True) #Seite 1 Feedback zum Experiment und Instruktionen ExpTeilnahme = models.IntegerField( label="Haben Sie schon einmal zuvor an einem Experiment teilgenommen", choices=[ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) #Instruktionen = models.BooleanField( # label="Empfanden Sie die Instruktionen als gut verständlich?", #choices=[ # [True, "Ja"], # [False, "Nein"] #], #widget=widgets.RadioSelect, #) InstruktionenJa = models.BooleanField(blank=False) InstruktionenNein = models.BooleanField(blank=True) InstruktionenText = models.StringField(blank=True) InstruktionenJ = models.BooleanField( choices=[ [True, "Ja"], [False, "Nein"], ], widgets=widgets.RadioSelect, ) #Seite 2 A-Spieler SpielerAQ1 = models.IntegerField( label="Inwieweit haben Sie sich mit Ihrem Teammitglied im ersten Teil des Experiments (Spieler*in B) durch die gemeinsame Zählaufgabe verbunden gefühlt? (1=gar nicht verbunden; 7=sehr verbunden)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ2Ja = models.BooleanField(blank=False) SpielerAQ2Nein = models.BooleanField(blank=True) SpielerAQ2Text = models.StringField(blank=True) SpielerAQ3Ja = models.BooleanField(blank=False) SpielerAQ3Nein = models.BooleanField(blank=True) SpielerAQ3Text = models.StringField(blank=True) SpielerAQ6 = models.StringField( label="Was hat Sie zu Ihrer Entscheidung über das Spendenbudget bewegt?" ) SpielerAQ7 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Entscheidung über das Spendenbudget berücksichtigt, wie Ihr Teammitglied (Spieler*in B) über Ihre Entscheidung denken würde? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ8 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Entscheidung über das Spendenbudget berücksichtigt, wie sich Ihr Teammitglied (Spieler*in B) verhalten wird? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ9 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Entscheidung über das Spendenbudget berücksichtigt, wie sich andere Teilnehmende des Experiments in der Rolle von Spieler*in A entscheiden könnten? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ10 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Entscheidung über das Spendenbudget berücksichtigt, ob Ihre getroffene Entscheidung die für Sie moralisch richtige Entscheidung darstellt? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ11 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Entscheidung über das Spendenbudget berücksichtigt, ob die Mehrheit der anderen Teilnehmenden in der Rolle von Spieler*in A Ihre getroffene Entscheidung als die moralisch richtige Entscheidung ansieht? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ12 = models.IntegerField( label="Wie hätten Sie sich in der Rolle von Spieler*in B entschieden?", choices=[ [0, "Stillschweigend über das Verhalten von Spieler*in A hinwegsehen"], [1, "Das Verhalten von Spieler*in A melden"] ], widget=widgets.RadioSelect, ) SpielerAQ13 = models.IntegerField( label="Inwieweit stimmen Sie der Aussage zu, dass die Einbehaltung eines Teils des Spendenbudgets an GoAhead ein Fehlerverhalten darstellt? (1=stimme gar nicht zu; 7=stimme voll und ganz zu)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ14 = models.IntegerField( label="Stellen Sie sich vor, Sie wären in der Rolle von „Spieler*in B“: Was wäre für Sie persönlich das moralisch richtige Verhalten.", choices=[ [0, "Stillschweigend über das Verhalten von Spieler*in A hinwegsehen"], [1, "Das Verhalten von Spieler*in A melden"] ], widget=widgets.RadioSelect, ) SpielerAQ15 = models.IntegerField( label="Geben Sie an, was Sie denken, was die Mehrheit aller Teilnehmenden in dieser Sitzung bei der vorangegangenen Frage angegeben hat.", choices=[ [0, "Stillschweigend über das Verhalten von Spieler*in A hinwegsehen"], [1, "Das Verhalten von Spieler*in A melden"] ], widget=widgets.RadioSelect, ) SpielerAQ16 = models.IntegerField( label="Wie stark identifizieren Sie sich mit den anderen Teilnehmenden dieses Experiments? (1=gar nicht; 7=sehr stark)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) #Nur T2 SpielerAQ17 = models.IntegerField( label="Geben Sie bitte an, was Sie denken, was die Mehrheit der Teilnehmenden in der Rolle „Spieler*in A“ in dieser Sitzung bei der Frage über das persönlich moralisch richtige Verhalten angegeben hat.", choices=[ [0, "Einen Teil des Spendenbudgets einbehalten"], [1, "Das vollständige Spendenbudget an GoAhead weiterleiten"], ], widget=widgets.RadioSelect, ) SpielerAQ18 = models.IntegerField( label="Im Experiment haben Sie die Information darüber bekommen, was Studierende der Universität Paderborn in vorherigen Sitzungen des gleichen Experiments mehrheitlich als das für sie persönlich moralisch richtige Verhalten angegeben haben. Die Mehrheit der Teilnehmenden hat angegeben, dass das für sie persönlich moralisch richtige Verhalten ist, ...", choices=[ [0, "... einen Teil des Spendenbudgets einzubehalten."], [1, "... das vollständige Spendenbudget an GoAhead weiterzuleiten."], ], widget=widgets.RadioSelect, ) # Seite 2 B-Spieler SpielerBQ1 = models.IntegerField( label="Inwieweit haben Sie sich mit Ihrem Teammitglied im ersten Teil des Experiments (Spieler*in A) durch die gemeinsame Zählaufgabe verbunden gefühlt? (1=gar nicht verbunden; 7=sehr verbunden)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ2Ja = models.BooleanField(blank=False) SpielerBQ2Nein = models.BooleanField(blank=True) SpielerBQ2Text = models.StringField(blank=True) SpielerBQ3Ja = models.BooleanField(blank=False) SpielerBQ3Nein = models.BooleanField(blank=True) SpielerBQ3Text = models.StringField(blank=True) SpielerBQ6 = models.StringField( label="Was hat Sie zu Ihrer Reaktion auf das Verhalten von Spieler*in A bewegt?" ) SpielerBQ7 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Reaktion auf das Verhalten von Spieler*in A berücksichtigt, wie Ihr Teammitglied (Spieler*in A) über Ihre Entscheidung denken würde? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ8 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Reaktion auf das Verhalten von Spieler*in A berücksichtigt, wie sich Ihr Teammitglied (Spieler*in A) verhalten wird? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ9 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Reaktion auf das Verhalten von Spieler*in A berücksichtigt, wie sich andere Teilnehmende des Experiments in der Rolle von Spieler*in B entscheiden könnten? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ10 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Reaktion auf das Verhalten von Spieler*in A berücksichtigt, ob Ihre getroffene Entscheidung die für Sie moralisch richtige Entscheidung darstellt? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ11 = models.IntegerField( label="Wie stark haben Sie bei Ihrer Reaktion auf das Verhalten von Spieler*in A berücksichtigt, ob die Mehrheit der anderen Teilnehmenden in der Rolle von Spieler*in B Ihre getroffene Entscheidung als die moralisch richtige Entscheidung ansieht? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ12 = models.IntegerField( label="Wie hätten Sie sich in der Rolle von Spieler*in A entschieden?", choices=[ [0, "Einen Teil des Spendenbudgets einbehalten"], [1, "Die Spende weiterleiten"] ], widget=widgets.RadioSelect, ) SpielerBQ13 = models.IntegerField( label="Inwieweit stimmen Sie der Aussage zu, dass die Einbehaltung eines Teils des Spendenbudgets an GoAhead ein Fehlerverhalten darstellt? (1=stimme gar nicht zu; 7=stimme voll und ganz zu)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ14 = models.IntegerField( label="Stellen Sie sich vor, Sie wären in der Rolle von „Spieler*in A“: Was wäre für Sie persönlich das moralisch richtige Verhalten.", choices=[ [0, "Einen Teil des Spendenbudgets einbehalten"], [1, "Das vollständige Spendenbudget an GoAhead weiterleiten"] ], widget=widgets.RadioSelect, ) SpielerBQ15 = models.IntegerField( label="Geben Sie an, was Sie denken, was die Mehrheit aller Teilnehmenden in dieser Sitzung bei der vorangegangenen Frage angegeben hat.", choices=[ [0, "Einen Teil des Spendenbudgets einbehalten"], [1, "Das vollständige Spendenbudget an GoAhead weiterleiten"] ], widget=widgets.RadioSelect, ) SpielerBQ16 = models.IntegerField( label="Wie stark identifizieren Sie sich mit den anderen Teilnehmenden dieses Experiments? (1=gar nicht; 7=sehr stark)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) #nur T2 SpielerBQ17 = models.IntegerField( label="Geben Sie bitte an, was Sie denken, was die Mehrheit der Teilnehmenden in der Rolle „Spieler*in B“ in dieser Sitzung bei der Frage über das persönlich moralisch richtige Verhalten angegeben hat.", choices=[ [0, "Stillschweigend über das Verhalten von Spieler*in A hinwegsehen"], [1, "Das Verhalten von Spieler*in A melden"] ], widget=widgets.RadioSelect, ) SpielerBQ18 = models.IntegerField( label="Im Experiment haben Sie die Information darüber bekommen, was Studierende der Universität Paderborn in vorherigen Sitzungen des gleichen Experiments mehrheitlich als das für sie persönlich moralisch richtige Verhalten angegeben haben. Die Mehrheit der Teilnehmenden hat angegeben, dass das für sie persönlich moralisch richtige Verhalten ist, ...", choices=[ [0, "... stillschweigend über das Verhalten von Spieler*in A hinwegzusehen."], [1, "... das Verhalten von Spieler*in A zu melden."], ], widget=widgets.RadioSelect, ) #Seite 3: Fragen zum zweiten Teil des Experiments Spieler1Q1 = models.IntegerField( label="Wie stark haben Sie in Ihrer Entscheidung, die Aufgabe in Teil 2 des Experiments allein oder als Team zu lösen, die Information über das Verhalten von Spieler*in 2 im ersten Teil des Experiments berücksichtigt? (1=gar nicht berücksichtigt; 7=stark berücksichtigt)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler1Q2 = models.IntegerField( label="Stellen Sie sich vor, es gäbe ein weiteres Gruppenmitglied mit dem Sie mehrheitlich entscheiden müssten, ob Spieler*in 2 an der Teamaufgabe teilnehmen darf oder nicht. Hätte das Ihre Entscheidung über die Teamaufgabe mit Spieler*in 2 geändert? ", choices=[ [0, "Nein"], [1, "Ja"], ], widget=widgets.RadioSelect, ) Spieler2Q1 = models.IntegerField( label="Wie hoch haben Sie das Risiko empfunden, dass Spieler*in 1 sich in Teil 2 des Experiments entscheidet, die Aufgabe alleine zu lösen? (1=sehr niedrig; 7=sehr hoch)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q2 = models.IntegerField( label="Inwiefern hatten Sie das Gefühl, dass die Entscheidung von Spieler*in 1, die Aufgabe in Teil 2 des Experiments alleine oder als Team zu lösen, von der Information über Ihr Verhalten in Teil 1 des Experiments beeinflusst wurde? (1=gar nicht; 7=sehr stark)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q3 = models.IntegerField( label="Inwiefern wurde Ihre Entscheidung in Teil 1 des Experiments dadurch beeinflusst, dass Spieler*in 1 in Teil 2 des Experiments entscheiden konnte, ob die Aufgabe allein oder als Team gelöst wird? (1=gar nicht; 7=sehr stark)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q4 = models.IntegerField( label="Hätten Sie Ihre Entscheidung in Teil 1 des Experiments geändert, wenn zwei Spieler*innen statt nur ein*e Spieler*in entscheiden müssten, ob Sie an der Teamaufgabe teilnehmen dürfen oder nicht? ", choices=[ [0, "Nein"], [1, "Ja"], ], widget=widgets.RadioSelect, ) #Seite 4 Social Comparison Fragen SCO1 = models.IntegerField( label="Ich vergleiche oft, wie es mir nahestehenden Personen (Partner*in, Familienmitgliedern) und wie es anderen geht.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO2 = models.IntegerField( label="Ich achte immer sehr darauf, wie ich Dinge im Vergleich zu anderen tue.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO3 = models.IntegerField( label="Wenn ich herausfinden will, wie gut ich etwas gemacht habe, vergleiche ich meine Leistungen mit denen anderer.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO4 = models.IntegerField( label="Ich vergleiche mein soziales Verhalten (z. B. soziale Fähigkeiten, Beliebtheit) oft mit dem anderer Menschen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO5 = models.IntegerField( label="Ich bin nicht der Typ Mensch, der sich oft mit anderen vergleicht.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO6 = models.IntegerField( label="Ich vergleiche mich oft mit anderen in Bezug auf das, was ich im Leben erreicht habe.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO7 = models.IntegerField( label="Ich unterhalte mich oft und gerne mit anderen über gemeinsame Meinungen und Erfahrungen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO8 = models.IntegerField( label="Ich versuche oft herauszufinden, was andere denken, die ähnliche Probleme haben wie ich.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO9 = models.IntegerField( label="Ich möchte immer wissen, was andere in einer ähnlichen Situation tun würden.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO10 = models.IntegerField( label="Wenn ich mehr über etwas erfahren möchte, versuche ich herauszufinden, was andere darüber denken.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO11 = models.IntegerField( label="Ich betrachte meine Lebenssituation nie im Vergleich zu der anderer Menschen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO12 = models.IntegerField( label="Ich habe ein starkes Bedürfnis, dazuzugehören.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) SCO13 = models.IntegerField( label="Ich habe ein hohes Selbstwertgefühl.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) #Seite 5 Fragen zum Spendenverhalten SpendeQ1 = models.IntegerField( label="Haben Sie schon einmal für ein Wohltätigkeitsprojekt gespendet?", choices=[ [0, "Nie"], [1, "Einmal"], [2, "1-3 Mal"], [3, "Regelmäßig"], ], widget=widgets.RadioSelect, ) #wegen Checkboxes andere Struktur #Frage 2 Person Kinder = models.BooleanField(blank=True, initial=False) K_M = models.BooleanField(blank=True, initial=False) K_J = models.BooleanField(blank=True, initial=False) Fr = models.BooleanField(blank=True, initial=False) Mn = models.BooleanField(blank=True, initial=False) PersonSonstige = models.BooleanField(blank=True, initial=False) #Frage 3 Region Afrika_ns = models.BooleanField(blank=True, initial=False) Afrika_s = models.BooleanField(blank=True, initial=False) Asien = models.BooleanField(blank=True, initial=False) LateinA = models.BooleanField(blank=True, initial=False) NordA = models.BooleanField(blank=True, initial=False) Osteuropa = models.BooleanField(blank=True, initial=False) Westeuropa = models.BooleanField(blank=True, initial=False) RegionSonstige = models.BooleanField(blank=True, initial=False) #Frage 4: Wohltätigkeitsprojekte H_Kinder = models.BooleanField(blank=True, initial=False) H_Hunger = models.BooleanField(blank=True, initial=False) H_Frieden = models.BooleanField(blank=True, initial=False) H_Tiere = models.BooleanField(blank=True, initial=False) HSonstige = models.BooleanField(blank=True, initial=False) #Frage 5: Unterstützungswürdigkeit von Spendenorganisation SpendeQ5 = models.IntegerField( label="Inwieweit stimmen Sie der Aussage zu, dass GoAhead mit Spenden unterstützt werden sollte? (1=stimme gar nicht zu; 7=stimme voll und ganz zu)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) #Seite 6 Demographische Angaben age = models.IntegerField( label="Wie alt sind Sie?", max=100, min=16 ) gender = models.IntegerField( label="Welchem Geschlecht fühlen Sie sich zugehörig?", choices=[ [1, "weiblich"], [2, "männlich"], [3, "nicht-binär"] ], widget=widgets.RadioSelect, ) major = models.StringField( label="Bitte geben Sie Ihren aktuellen Studiengang an.", ) year = models.IntegerField( label="Aktuelles Fachsemester", max=100, min=1 ) # PAGES class WelcomeWaitPage(WaitPage): wait_for_all_groups = True def after_all_players_arrive(subsession: Subsession): # Spielerdaten bekommen aus wb treatment session for p in subsession.get_players(): if p.participant.vars['spieler'] == 'Spieler1': p.spieler1 = True else: p.spieler1 = False; if p.participant.vars['playertype'] == 'A': p.roletypeA = True else: p.roletypeA = False def is_displayed(player: Player): # nur anzeigen wenn Fragebogen Teil des WB Treatments ist return player.subsession.STANDALONE==False def vars_for_template(player: Player): return dict( body_text="Bitte warten Sie, bis der Fragebogen für alle Teilnehmenden gestartet wird." ) class MyWelcomePage(Page): #erste Seite pass class FeedExp(Page): form_model = 'player' form_fields = [ 'ExpTeilnahme', 'InstruktionenJa', 'InstruktionenNein', 'InstruktionenText' ] class FeedExp2(Page): form_model = 'player' form_fields = [ 'ExpTeilnahme', 'InstruktionenJ', 'InstruktionenText' ] class SpielerAPage(Page): form_model = 'player' form_fields = [ 'SpielerAQ16', 'SpielerAQ1', 'SpielerAQ2Ja', 'SpielerAQ2Nein', 'SpielerAQ2Text', 'SpielerAQ3Ja', 'SpielerAQ3Nein', 'SpielerAQ3Text', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ8', 'SpielerAQ9', 'SpielerAQ10', 'SpielerAQ11', 'SpielerAQ13', 'SpielerAQ14', 'SpielerAQ15', 'SpielerAQ12' ] def is_displayed(player: Player): #nur spieler vom typ A anzeigen und nicht T2 return (player.roletypeA == True and player.subsession.TREATMENT != 'T2') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen class SpielerAPageT2(Page): form_model = 'player' form_fields = [ 'SpielerAQ16', 'SpielerAQ1', 'SpielerAQ2Ja', 'SpielerAQ2Nein', 'SpielerAQ2Text', 'SpielerAQ3Ja', 'SpielerAQ3Nein', 'SpielerAQ3Text', 'SpielerAQ18', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ8', 'SpielerAQ9', 'SpielerAQ10', 'SpielerAQ17', 'SpielerAQ11', 'SpielerAQ13', 'SpielerAQ14', 'SpielerAQ15', 'SpielerAQ12' ] def is_displayed(player: Player): #nur spieler vom typ A anzeigen return (player.roletypeA == True and player.subsession.TREATMENT =='T2') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen class SpielerBPage(Page): form_model = 'player' form_fields = [ 'SpielerBQ16', 'SpielerBQ1', 'SpielerBQ2Ja', 'SpielerBQ2Nein', 'SpielerBQ2Text', 'SpielerBQ3Ja', 'SpielerBQ3Nein', 'SpielerBQ3Text', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ11', 'SpielerBQ13', 'SpielerBQ14', 'SpielerBQ15', 'SpielerBQ12' ] def is_displayed(player: Player): # nur spieler vom typ B anzeigen und nicht T2 return (player.roletypeA == False and player.subsession.TREATMENT != 'T2') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen #only for T2 class SpielerBPageT2 (Page): form_model = 'player' form_fields = [ 'SpielerBQ16', 'SpielerBQ1', 'SpielerBQ2Ja', 'SpielerBQ2Nein', 'SpielerBQ2Text', 'SpielerBQ3Ja', 'SpielerBQ3Nein', 'SpielerBQ3Text', 'SpielerBQ18', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ17', 'SpielerBQ11', 'SpielerBQ13', 'SpielerBQ14', 'SpielerBQ15', 'SpielerBQ12' ] def is_displayed(player: Player): # nur spieler vom typ B anzeigen return (player.roletypeA == False and player.subsession.TREATMENT=='T2') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen class ZweiterTeilSP1(Page): form_model = 'player' form_fields = ['Spieler1Q1', 'Spieler1Q2'] @staticmethod def is_displayed(player: Player): return player.spieler1 and (player.subsession.TREATMENT=='T1' or player.subsession.TREATMENT=='T2') class ZweiterTeilSP2_T12(Page): form_model = 'player' form_fields = ['Spieler2Q1', 'Spieler2Q2', 'Spieler2Q3', 'Spieler2Q4' ] @staticmethod def is_displayed(player: Player): return not player.spieler1 and (player.subsession.TREATMENT=='T1' or player.subsession.TREATMENT=='T2') class ZweiterTeilSP2(Page): form_model = 'player' form_fields = ['Spieler2Q1', 'Spieler2Q3' ] @staticmethod def is_displayed(player: Player): return not player.spieler1 and player.subsession.TREATMENT=='Control' class FragenSCO(Page): form_model = 'player' form_fields = ['SCO1', 'SCO2', 'SCO3', 'SCO4', 'SCO5', 'SCO6', 'SCO7', 'SCO8', 'SCO9', 'SCO10', 'SCO11', 'SCO12', 'SCO13' ] class SpendenF(Page): form_model = 'player' form_fields = ['SpendeQ1', 'Kinder', 'K_M', 'K_J', 'Fr', 'Mn', 'PersonSonstige', 'Afrika_ns', 'Afrika_s', 'Asien', 'LateinA', 'NordA', 'Osteuropa', 'Westeuropa', 'RegionSonstige', 'H_Kinder', 'H_Hunger', 'H_Frieden', 'H_Tiere', 'HSonstige', 'SpendeQ5' ] @staticmethod def error_message(player: Player, values): num_selected1 = 0 num_selected2=0 num_selected3=0 seterror = False string1="" string2="" string3="" for pers in C.Personen: if values[pers['name']]: num_selected1 += 1 if num_selected1 < 1: seterror=True string1 = "Bitte wählen Sie mindestens eine Hilfeempfängeroption aus." for regs in C.Region: if values[regs['name']]: num_selected2 += 1 if num_selected2 < 1: seterror = True string2 = "Bitte wählen Sie mindestens eine der Regionoptionen aus." for proj in C.Projekte: if values[proj['name']]: num_selected3 += 1 if num_selected3 < 1: seterror = True string3 = "Bitte wählen Sie mindestens eine der Pojektoptionen aus." if seterror: return " "+string1+"\n "+string2+"\n "+string3 class Demographie(Page): form_model = 'player' form_fields = [ 'age', 'gender', 'major', 'year', ] class Final(Page): pass #page_sequence = [MyWaitPage,MyWelcomePage, FeedExp, test ,MyPage, MyPage1, MyPage3,MyPage4,MyPage5,MyPage6,MyPage7,Final] page_sequence = [WelcomeWaitPage, MyWelcomePage, FeedExp, SpielerAPage,SpielerAPageT2, SpielerBPage, SpielerBPageT2,ZweiterTeilSP1,ZweiterTeilSP2, ZweiterTeilSP2_T12,FragenSCO, SpendenF, Demographie,Final]