from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'unmasking_corporate_questionaire' NUM_ROUNDS = 1 #NUM_PAGES = 3 #### todo: Rausnehmen sobald du durch bist - Player_per_group auf None setzen PLAYERS_PER_GROUP = 2 ### None COMPANY_OWNER_ROLE = "Firmeninhaber:in" EMPLOYEE_ROLE = "Arbeitnehmer:in" ### LÖSCHEN!!!! #EMPLOYEE_ROLE = "employee" #COMPANY_ROLE = "company" class Subsession(BaseSubsession): pass class Group(BaseGroup): pass #def creating_session(subsession): ### Todo: If Else löschen und nur den Else Part übernehmen nach erfolgreichen Test #if C.PLAYERS_PER_GROUP == 2: ### nur im Testfall #for player in subsession.get_players(): #player.employee = player.role == C.EMPLOYEE_ROLE #else: #for player in subsession.get_players(): #player.employee = player.participant.vars.get('employee', True) class Player(BasePlayer): #employee = models.BooleanField(initial=True) example_1 = models.StringField(label='Dies ist eine Beispielfragen mit Textantwort') example_2 = models.IntegerField(label='Ich bin eine Multiple Choice mit Codierten Antworten', choices=[ [1,'Antwort A'], [2,'Antwort B'], [3, 'Antwort C'] ]) example_3 = models.StringField(label='Die gleiche Frage wie bevor, nur als Text gespeichert', choices=['Antwort A','Antwort B','Antwort C']) example_4 = models.BooleanField(label='Binäre Frage: Haben sie ein Haustier') example_5 = models.BooleanField(label='Binäre Frage mit Textantworten', choices=[[False, 'Ich habe mind. ein Haustier'], [True, 'Ich habe kein(e) Haustier(e)']]) ### Beispielffragenm für Emplyee/CO example_employee = models.BooleanField(label="Sind sie sicher das sie Mitarbeiter sind?") example_company_owner = models.BooleanField(label="Sind sie sicher das sie Inhaber sind?") ############## Start eigener Fragebogen teilnahme = models.IntegerField( label="Haben Sie zuvor schon einmal an einem Experiment teilgenommen?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) # The widget parameter customizes how the field is rendered in the user interface. # RadioSelect specifies that the choices will be displayed as radio buttons, allowing the user to select only one option. instructions = models.IntegerField( label="Empfanden Sie die Instruktionen zum Experiment als gut verständlich?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) instructions_comment = models.StringField( blank=True, label="Falls nicht, warum?", ) #allgemeine Fragen age = models.StringField( #ist es überhaupt StringField Frage, wenn man mit Zahl antwortet? label="Wie alt sind Sie?",) gender = models.IntegerField( label="Welchem Geschlecht fühlen Sie sich zugehörig?", choices=[ [0, "weiblich"], [1, "männlich"], [2, "divers"] ], widget=widgets.RadioSelect, ) bildungsniveau = models.IntegerField( label="Bitte geben Sie den höchsten Bildungsabschluss, den Sie bisher erlangt haben.", choices=[ [0, "kein formaler Bildungsabschluss"], [1, "noch Schüler*in"], [2, "Hauptschulabschluss"], [3, "Realschulabschluss"], [4, "Fachabitur"], [5, "Abitur"], [6, "Berufsausbildung"], [7, "Bachelor"], [8, "Master"], [9, "Doktorgrad"] ], widget=widgets.RadioSelect, ) studienstand = models.BooleanField( label="Studieren Sie aktuell?", choices=[ [1, "Ja"], [0, "Nein"] ] ) deutschniveau = models.BooleanField( label="Ist Deutsch Ihre Erstsprache?", choices=[ [1, "Ja"], [0, "Nein"] ] ) # Fragen zum Experiment (Spieler A - Firmeninhaber) spielerAQ1 = models.IntegerField( label="Inwieweit haben Sie sich dazu verpflichtet gefühlt, das von Ihrer Mitarbeitenden generierten Geld zu spenden?", choices=[ [0, "Überhaupt nicht"], [1, "Eher nicht"], [2, "Weder noch"], [3, "Eher stark"], [4, "Stark"] ], widget=widgets.RadioSelect, ) spielerAQ2 = models.BooleanField( label="Bei Ihrer Entscheidung, das Geld zu behalten oder zu spenden, sind Sie davon ausgegangen, dass Ihr/e Teampartner:in nichts über ihre Entscheidung erfährt?", choices=[ [1, "Ja"], [0, "Nein"] ] ) spielerAQ3 = models.BooleanField( label="Würden Sie das Geld behalten, wenn Sie sicher wüssten, dass Ihr/e Teampartner:in niemals davon erfährt?", choices=[ [1, "Ja"], [0, "Nein"] ] ) spielerAQ4 = models.BooleanField( label="Würden Sie das Geld spenden, wenn Sie sicher wüssten, dass Ihr/e Teampartner:in auf jeden Fall davon erfährt?", choices=[ [1, "Ja"], [0, "Nein"] ] ) # Fragen zum Spendeverhalten spendeQ1 = models.IntegerField( label= "Haben Sie selbst schon einmal für ein Wohltätigkeitsprojekt gespendet? Und wenn ja, wie häufig?", choices=[ [0, "Nie"], [1, "Einmal"], [2, "1-3 Mal"], [3, "Regelmäßig"] ], widget=widgets.RadioSelect, ) spendeQ2 = models.IntegerField( label="An welche geographischen Regionen würden Sie am ehesten spenden?", choices=[ [1, "Deutschland"], [2, "Westeuropa außerhalb von Deutschland"], [3, "Osteuropa"], [4, "Afrika"], [5, "Lateinamerika"], [6, "Asien"], [7, "Ich habe keine geografische Präferenz"], ], widget=widgets.RadioSelect, ) spendeQ3 = models.IntegerField( label="An welches der folgenden Arten von gemeinnützigen Projekten würden Sie am ehesten spenden?", choices=[ [1, "Hilfsprojekte für Kinder und Bildung (z.B. UNICEF, SOS Kinderdörfer, Save the Children)"], [2, "Hilfsprojekte gegen Hunger und Armut (z.B. SOS Kinderdörfer, Gemeinsam für Afrika, Welthungerhilfe)"], [3, "Hilfsprojekte für Frieden und Schlichtung"], [4, "Hilfsprojekte für Tiere / Umwelt (z.B. Greenpeace, WWF, We want MOOR)"], ], widget=widgets.RadioSelect, ) spendeQ4 = models.BooleanField( label = "Hat Ihre persönliche Einstellung zum sozialen Engagement ihr Spendeverhalten im Experiment beeinflusst?", choices= [ [1, "Ja"], [0, "Nein"] ], widget = widgets.RadioSelect, ) spendeQ5_comment = models.StringField( blank=True, label="Falls ja, wie?", ) spendeQ6 = models.BooleanField( label = "Fanden Sie das Ziel des Projektes 'Sterntaler' wichtig?", choices = [ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spendeQ7_comment = models.StringField( blank=True, label="Falls nicht, wieso?", ) spendeQ8 = models.BooleanField( label = "Hat die Wahl der Spendeorganisation 'Sterntaler' Ihre Entscheidung bei dem Experiment beeinflusst?", choices=[ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spendeQ9_comment = models.StringField( blank=True, label= "Wenn ja, wie?", ) spendeQ10 = models.IntegerField( label = "Sofern Sie spenden: Wie stark berücksichtigen Sie bei Ihrer Entscheidung, für wohltätige oder nachhaltige Zwecke zu spenden, die langfristigen positiven Auswirkungen Ihrer Spende?", choices=[ [0, "Nicht zutreffend"], [1, "Überhaupt nicht"], [2, "Eher nicht"], [3, "Weder noch"], [4, "Eher stark"], [5, "Sehr stark"] ], widget=widgets.RadioSelect, ) spendeQ11 = models.IntegerField( label= "Wie wichtig ist es Ihnen, dass Ihre Spende einen positiven Einfluss auf die Gesellschaft hat?", choices= [ [0, "Nicht zutreffend"], [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) #Zusätzliche Fragen. Persöhliche Meinung meinungQ1 = models.IntegerField( label="Wie wichtig ist Ihnen soziales Engagement?", choices= [ [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) meinungQ2 = models.IntegerField( label= "Wie wichtig ist es für Sie, dass Eigenschaften wie Ehrlichkeit und Gerechtigkeit ein Teil dessen sind, wer Sie als Person sind?", choices= [ [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) meinungQ3 = models.IntegerField( label= "Unabhängig von diesem Experiment: Wie wichtig sind die sozialbezogenen Einstellungen Ihres Arbeitgebers/ihrer Arbeitgeberin für Sie persönlich?", choices= [ [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) meinungQ4 = models.IntegerField( label= "Unabhängig von diesem Experiment: Wie wichtig ist es für Sie, dass Ihr/e Arbeitgeber:in seine/ihre Versprechen in Bezug auf soziale Verantwortung (z. B. Spendenzusagen) einhält?", choices= [ [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) #Fragen Spieler B (Arbeitnehmer) spielerBQ1 = models.BooleanField( label= "Empfanden Sie die Aufgabe (das Zählen der 7er) als schwierig?", choices= [ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spielerBQ2_comment = models.StringField( blank=True, label="Wenn ja, warum?", ) spielerBQ3 = models.BooleanField( label= "Haben Sie während der gesamten 4 Minuten gezählt?", choices=[ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spielerBQ4_comment = models.StringField( blank=True, label="Wenn nein, warum nicht?", ) spielerBQ5 = models.BooleanField( label= "In Runde 1, sind Sie davon ausgegangen, dass Ihr/e Teampartner:in für die Wohltätigkeitorganisation spendet?", choices=[ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spielerBQ6_comment = models.StringField( blank=True, label="Wenn nein, warum nicht?", ) spielerBQ7 = models.BooleanField( label="War es für Sie wichtig, dass Ihr/e Teampartner:in für die Wohltätigkeitorganisation spendet?", choices=[ [1, "Ja"], [0, "Nein"] ], widget=widgets.RadioSelect, ) spielerBQ8 = models.IntegerField( label = "Wie wichtig war die Entscheidung Ihrer/Ihres Teampartnerin/Teampartners in Runde 1 (das Geld zu spenden oder im Unternehmen zu behalten) für Ihre Entscheidung, sich um die Lösung von Aufgaben in Runde 2 zu bemühen?", choices=[ [1, "Überhaupt nicht wichtig"], [2, "Eher nicht wichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"] ], widget=widgets.RadioSelect, ) spielerBQ9 = models.IntegerField( label= "Wie schätzen Sie die Veränderung ihrer Arbeitsleistung von der ersten zur zweiten Runde ein?", choices= [ [1, "Viel schlechter"], [2, "Eher schlechter"], [3, "Weder noch"], [4, "Eher besser"], [5, "Viel besser"] ], widget=widgets.RadioSelect, ) # PAGES class FragebogenSeite1(Page): template_name = 'unmasking_corporate_questionaire/Fragebogen.html' form_model = 'player' form_fields = ['teilnahme', 'instructions', 'instructions_comment', 'age','gender','bildungsniveau', 'studienstand', 'deutschniveau'] @staticmethod def vars_for_template(player): return dict( page=1 ) class FragebogenSeite2Spende(Page): template_name = 'unmasking_corporate_questionaire/Fragebogen.html' form_model = 'player' form_fields = ['spendeQ1', 'spendeQ11', 'spendeQ2', 'spendeQ3', 'spendeQ4', 'spendeQ5_comment', 'spendeQ6', 'spendeQ7_comment', 'spendeQ8', 'spendeQ9_comment'] @staticmethod def vars_for_template(player): return dict( page=2 ) #class FragebogenSeiteMeinungInhaber(Page): #template_name = 'unmasking_corporate_questionaire/Fragebogen.html' #form_model = 'player' #form_fields = ['meinungQ1', 'meinungQ2', 'meinungQ3', 'meinungQ4'] #@staticmethod #def is_displayed(player): #return not player.employee #class FragebogenSeiteMeinungMitarbeiter(Page): #template_name = 'unmasking_corporate_questionaire/Fragebogen.html' # form_model = 'player' #form_fields = ['meinungQ1', 'meinungQ2', 'meinungQ3', 'meinungQ4'] # @staticmethod #def is_displayed(player): #return player.employee #Fragebogen Spieler A (Firmeninhaber) class FragebogenInhaber(Page): form_model = 'player' form_fields = ['spielerAQ1', 'spielerAQ2', 'spielerAQ3', 'spielerAQ4', 'meinungQ1', 'meinungQ2', 'meinungQ3', 'meinungQ4'] @staticmethod def is_displayed(player): return player.role == C.COMPANY_OWNER_ROLE class FragebogenMitarbeiter(Page): form_model = 'player' form_fields = ['spielerBQ1', 'spielerBQ2_comment', 'spielerBQ3', 'spielerBQ4_comment', 'spielerBQ5', 'spielerBQ6_comment', 'spielerBQ7', 'spielerBQ8', 'spielerBQ9', 'meinungQ1', 'meinungQ2', 'meinungQ3', 'meinungQ4'] @staticmethod def is_displayed(player): return player.role == C.EMPLOYEE_ROLE class Results(Page): pass page_sequence = [FragebogenSeite1, FragebogenSeite2Spende, FragebogenInhaber, FragebogenMitarbeiter, Results]