from otree.api import * import random DEBUG = False ### todo: Set to False for real experiment & controlstages working / True doc = """ "Environmental Experiment". """ class C(BaseConstants): NAME_IN_URL = 'Environmental_Questionnaire_Employee' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 player_roles = ['employee', 'employer'] class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): player_Type = models.IntegerField() user_Role = models.StringField() correct_answer = models.IntegerField(initial=0) User_input = models.IntegerField(blank=True) total_correct = models.IntegerField() amount = models.IntegerField() numberInput = models.IntegerField() counter = models.IntegerField(initial=0) 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?", ) employeeQ1 = models.IntegerField( label="Empfanden Sie die Aufgabe (das Zählen der 7er) als schwierig?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) employeeQ2 = models.IntegerField( label="Haben Sie während der gesamten 4 Minuten durchgehend gezählt?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) employeeQ2_comment = models.StringField( blank=True, label="Falls nicht, warum?", ) employeeQ3 = models.IntegerField( label="Empfanden Sie, dass Sie und Ihr Spielpartner (Manager) gemeinsame Werte teilen?", choices=[ [1, "Überhaupt nicht"], [2, "Eher nicht"], [3, "Weder noch"], [4, "Eher ja"], [5, "Ja"], ], widget=widgets.RadioSelect, ) employeeQ4 = models.IntegerField( label="Wie wichtig war die Umwelteinstellung des Managers zu für Ihre Anstrengung beim Bearbeiten der Aufgabe?", choices=[ [1, "Überhaupt nicht wichtig"], [2, "Kaum wichtig"], [3, "Weder noch"], [4, "Eher wichtig "], [5, "Sehr wichtig"], ], widget=widgets.RadioSelect, ) employeeQ4_comment = models.StringField( blank=True, label="Bitte begründen Sie Ihre Antwort kurz:", ) employeeQ5 = models.IntegerField( label="Wie wichtig war es für Sie, wie viel Ihr Manager für das Naturschutzprojekt spendet?", choices=[ [1, "Überhaupt nicht wichtig"], [2, "Kaum wichtig"], [3, "Weder noch"], [4, "Eher wichtig "], [5, "Sehr wichtig"], ], widget=widgets.RadioSelect, ) employeeQ6 = models.IntegerField( label="Gehen Sie davon aus, dass ein Manager mit positiver Umwelteinstellung einen größeren Anteil an das Naturschutzprojekt spendet?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) attentioncheckE = models.IntegerField( label="Bitte wählen Sie die Ziffer 4", choices=[ [1, "1"], [2, "2"], [3, "4"], [4, "3"], ], widget=widgets.RadioSelect, ) donationQ1 = models.IntegerField( label="Wie oft haben Sie bisher für gemeinnützige Projekte gespendet?", choices=[ [1, "Noch nie"], [2, "1 mal"], [3, "2-3 mal"], [4, "Häufiger als 3 mal"], ], widget=widgets.RadioSelect, ) donationQ2 = 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, ) donationQ3 = 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, ) charity = models.IntegerField( label="Wie nehmen Sie die Organisation 'We want MOOR' wahr?", choices=[ [1, "Sehr negativ"], [2, "Eher negativ"], [3, "Weder noch"], [4, "Eher positiv"], [5, "Sehr positiv"], ], widget=widgets.RadioSelect, ) charity_impact = models.IntegerField( label="Hat unsere Auswahl der Spendenorganisation „We Want MOOR“ Ihre Anstrengung im Experiment beeinflusst?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) charity_impact_comment = models.StringField( blank=True, label="Bitte begründen Sie Ihre Antwort kurz:", ) attitudeQ1 = models.IntegerField( label="Unabhängig von diesem Experiment: Wie wichtig ist die Umwelteinstellung Ihres Vorgesetzten für Sie persönlich?", choices=[ [1, "Sehr unwichtig"], [2, "Eher unwichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"], ], widget=widgets.RadioSelect, ) attitudeQ2 = models.IntegerField( label="Unabhängig von diesem Experiment: Wie wichtig ist es Ihrer Meinung nach, dass Führungskräfte ihre persönlichen Meinungen und Werte bezüglich ihrer Umwelteinstellungen offen an ihre Mitarbeiter kommunizieren?", choices=[ [1, "Sehr unwichtig"], [2, "Eher unwichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"], ], widget=widgets.RadioSelect, ) attitudeQ3 = models.IntegerField( label="Unabhängig von diesem Experiment: Wie wichtig ist es Ihrer Meinung nach für ein Unternehmen, Manager mit einer positiven Umwelteinstellung einzustellen?", choices=[ [1, "Sehr unwichtig"], [2, "Eher unwichtig"], [3, "Weder noch"], [4, "Eher wichtig"], [5, "Sehr wichtig"], ], widget=widgets.RadioSelect, ) age = models.IntegerField( label="Wie alt sind Sie?", ) gender = models.IntegerField( label="Welchem Geschlecht fühlen Sie sich zugehörig?", choices=[ [1, "weiblich"], [2, "männlich"], [3, "nicht-binär"] ], ) educ = models.IntegerField( label="Bitte geben Sie den höchsten Bildungsabschluss an, den Sie bisher erlangt haben.", choices=[ [0, "Kein formaler Bildungsabschluss"], [1, "Haupt-/Realschule"], [2, "(Fach-)Abitur"], [3, "Berufsausbildung"], [4, "Bachelor"], [5, "Master/Diplom"], [6, "Promotion"], ], widget=widgets.RadioSelect, ) student = models.IntegerField( label="Studieren Sie aktuell?", choices=[ [1, "Ja"], [0, "Nein"], ], widget=widgets.RadioSelect, ) major = models.StringField( label="Bitte geben Sie Ihren aktuellen Studiengang / Beruf an.", ) living = models.StringField( label="Welche Option beschreibt Ihren Wohnort am besten?", choices=[ [1, "Ländlich (weniger als 20.000 Einwohner)"], [2, "Kleinere Stadt (20.000 bis 50.000 Einwohner)"], [2, "Mittlere Stadt (50.000 bis 250.000 Einwohner)"], [4, "Größere Stadt (mehr als 250.000 Einwohner)"], ], widget=widgets.RadioSelect, ) income = models.IntegerField( label="In welchem der folgenden Intervalle liegt Ihr Monats-Nettoeinkommen?", choices=[ [1, "bis 749 Euro"], [2, "750 bis 1.249 Euro"], [3, "1.250 bis 1.749 Euro"], [4, "1.750 bis 2.499 Euro"], [5, "mehr als 2.500 Euro"], ], widget=widgets.RadioSelect, ) german = models.IntegerField( label="Ist Deutsch Ihre Erstsprache?", choices=[ [1, "Ja"], [2, "Nein"], ], widget=widgets.RadioSelect, ) comment = models.LongStringField( blank=True, label="Möchten Sie uns noch etwas mitteilen? (optional)", ) class Questionnaire(Page): @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS class ExperimentFeedback(Page): form_model = 'player' form_fields = ['instructions', 'instructions_comment', 'employeeQ1', 'employeeQ2', 'employeeQ2_comment', 'employeeQ3', 'employeeQ4', 'employeeQ4_comment', 'employeeQ5', 'employeeQ6', 'attentioncheckE'] @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS class Attitudes(Page): form_model = 'player' form_fields = ['donationQ1', 'donationQ2', 'donationQ3', 'charity', 'charity_impact', 'charity_impact_comment', 'attitudeQ1', 'attitudeQ2', 'attitudeQ3'] @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS class Demographics(Page): form_model = 'player' form_fields = ['age', 'gender', 'living', 'educ', 'student', 'major', 'income', 'german', 'comment'] @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS class FinalPage(Page): @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS page_sequence = [Questionnaire, ExperimentFeedback, Attitudes, Demographics, FinalPage, ]