from otree.api import * c = cu doc = '' class Constants(BaseConstants): players_per_group = None num_rounds = 1 endowment = cu(10) moderate_default = cu(8) name_in_url = 'CO2_Experiment' def creating_session(subsession): session = subsession.session import itertools treatment_group = itertools.cycle([1, 2, 3]) for player in subsession.get_players(): player.treatment_group = next(treatment_group) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): treatment_group = models.IntegerField() contribution_zero = models.CurrencyField(choices=[[0, '0 € (10 € behalten)'], [1, '1 € (9 € behalten)'], [2, '2 € (8 € behalten)'], [3, '3 € (7 € behalten)'], [4, '4 € (6 € behalten)'], [5, '5 € (5 € behalten)'], [6, '6 € (4 € behalten)'], [7, '7 € (3 € behalten)'], [8, '8 € (2 € behalten)'], [9, '9 € (1 € behalten)'], [10, '10 € (0 € behalten)']], initial=0, label='Bitte wählen Sie aus, wie viel Geld Sie an das Kompensationsprogramm geben möchten, um die CO2 Emissionen Ihrer Flüge zu kompensieren. Den Rest Ihrer 10 € können Sie behalten.', max=Constants.endowment, min=0, widget=widgets.RadioSelect) contribution_moderate = models.CurrencyField(choices=[[0, '0 € (10 € behalten)'], [1, '1 € (9 € behalten)'], [2, '2 € (8 € behalten)'], [3, '3 € (7 € behalten)'], [4, '4 € (6 € behalten)'], [5, '5 € (5 € behalten)'], [6, '6 € (4 € behalten)'], [7, '7 € (3 € behalten)'], [8, '8 € (2 € behalten)'], [9, '9 € (1 € behalten)'], [10, '10 € (0 € behalten)']], initial=Constants.moderate_default, label='Bitte wählen Sie aus, wie viel Geld Sie an das Kompensationsprogramm geben möchten, um die CO2 Emissionen Ihrer Flüge zu kompensieren. Den Rest Ihrer 10 € können Sie behalten.', max=Constants.endowment, min=0, widget=widgets.RadioSelect) contribution_information = models.CurrencyField(choices=[[0, '0 € (10 € behalten)'], [1, '1 € (9 € behalten)'], [2, '2 € (8 € behalten)'], [3, '3 € (7 € behalten)'], [4, '4 € (6 € behalten)'], [5, '5 € (5 € behalten)'], [6, '6 € (4 € behalten)'], [7, '7 € (3 € behalten)'], [8, '8 € (2 € behalten)'], [9, '9 € (1 € behalten)'], [10, '10 € (0 € behalten)']], initial=0, label='Bitte wählen Sie aus, wie viel Geld Sie an das Kompensationsprogramm geben möchten, um die CO2 Emissionen Ihrer Flüge zu kompensieren. Den Rest Ihrer 10 € können Sie behalten.', max=Constants.endowment, min=0, widget=widgets.RadioSelect) Age = models.IntegerField(label='Ihr Alter:', max=120, min=12) Gender = models.StringField(choices=[['male', 'männlich'], ['female', 'weiblich'], ['diverse', 'divers']], label='Bitte wählen Sie Ihr Geschlecht:', widget=widgets.RadioSelect) Nationality = models.StringField(choices=[['Afghanistan', 'Afghanistan'], ['Ägypten', 'Ägypten'], ['Albanien', 'Albanien'], ['Algerien', 'Algerien'], ['Andorra', 'Andorra'], ['Angola', 'Angola'], ['Antigua und Barbuda', 'Antigua und Barbuda'], ['Äquatorialguinea', 'Äquatorialguinea'], ['Argentinien', 'Argentinien'], ['Armenien', 'Armenien'], ['Aserbaidschan', 'Aserbaidschan'], ['Äthiopien', 'Äthiopien'], ['Australien', 'Australien'], ['Bahamas', 'Bahamas'], ['Bahrain', 'Bahrain'], ['Bangladesch', 'Bangladesch'], ['Barbados', 'Barbados'], ['Belgien', 'Belgien'], ['Belize', 'Belize'], ['Benin', 'Benin'], ['Bergkarabach', 'Bergkarabach'], ['Bhutan', 'Bhutan'], ['Bolivien', 'Bolivien'], ['Bosnien und Herzegowina', 'Bosnien und Herzegowina'], ['Botswana', 'Botswana'], ['Brasilien', 'Brasilien'], ['Brunei', 'Brunei'], ['Bulgarien', 'Bulgarien'], ['Burkina Faso', 'Burkina Faso'], ['Burundi', 'Burundi'], ['Chile', 'Chile'], ['Republik China', 'Republik China'], ['Volksrepublik China', 'Volksrepublik China'], ['Cookinseln', 'Cookinseln'], ['Costa Rica', 'Costa Rica'], ['Dänemark', 'Dänemark'], ['Deutschland', 'Deutschland'], ['Dominica', 'Dominica'], ['Dominikanische Republik', 'Dominikanische Republik'], ['Dschibuti', 'Dschibuti'], ['Ecuador', 'Ecuador'], ['El Salvador', 'El Salvador'], ['Elfenbeinküste', 'Elfenbeinküste'], ['Eritrea', 'Eritrea'], ['Estland', 'Estland'], ['Fidschi', 'Fidschi'], ['Finnland', 'Finnland'], ['Frankreich', 'Frankreich'], ['Gabun', 'Gabun'], ['Gambia', 'Gambia'], ['Georgien', 'Georgien'], ['Ghana', 'Ghana'], ['Grenada', 'Grenada'], ['Griechenland', 'Griechenland'], ['Guatemala', 'Guatemala'], ['Guinea', 'Guinea'], ['Guinea-Bissau', 'Guinea-Bissau'], ['Guyana', 'Guyana'], ['Haiti', 'Haiti'], ['Honduras', 'Honduras'], ['Hongkong', 'Hongkong'], ['Indien', 'Indien'], ['Indonesien', 'Indonesien'], ['Irak', 'Irak'], ['Iran', 'Iran'], ['Irland', 'Irland'], ['Island', 'Island'], ['Israel', 'Israel'], ['Italien', 'Italien'], ['Jamaika', 'Jamaika'], ['Japan', 'Japan'], ['Jemen', 'Jemen'], ['Jordanien', 'Jordanien'], ['Kambodscha', 'Kambodscha'], ['Kamerun', 'Kamerun'], ['Kanada', 'Kanada'], ['Kap Verde', 'Kap Verde'], ['Kasachstan', 'Kasachstan'], ['Katar', 'Katar'], ['Kenia', 'Kenia'], ['Kirgisistan', 'Kirgisistan'], ['Kiribati', 'Kiribati'], ['Kolumbien', 'Kolumbien'], ['Komoren', 'Komoren'], ['Kongo, Demokratische Republik', 'Kongo, Demokratische Republik'], ['Kongo, Republik', 'Kongo, Republik'], ['Kosovo', 'Kosovo'], ['Kroatien', 'Kroatien'], ['Kuba', 'Kuba'], ['Kuwait', 'Kuwait'], ['Laos', 'Laos'], ['Lesotho', 'Lesotho'], ['Lettland', 'Lettland'], ['Libanon', 'Libanon'], ['Liberia', 'Liberia'], ['Libyen', 'Libyen'], ['Liechtenstein', 'Liechtenstein'], ['Litauen', 'Litauen'], ['Luxemburg', 'Luxemburg'], ['Madagaskar', 'Madagaskar'], ['Malawi', 'Malawi'], ['Malaysia', 'Malaysia'], ['Malediven', 'Malediven'], ['Mali', 'Mali'], ['Malta', 'Malta'], ['Marokko', 'Marokko'], ['Marshallinseln', 'Marshallinseln'], ['Mauretanien', 'Mauretanien'], ['Mauritius', 'Mauritius'], ['Mazedonien', 'Mazedonien'], ['Mexiko', 'Mexiko'], ['Mikronesien', 'Mikronesien'], ['Moldawien', 'Moldawien'], ['Monaco', 'Monaco'], ['Mongolei', 'Mongolei'], ['Montenegro', 'Montenegro'], ['Mosambik', 'Mosambik'], ['Myanmar', 'Myanmar'], ['Namibia', 'Namibia'], ['Nauru', 'Nauru'], ['Nepal', 'Nepal'], ['Neuseeland', 'Neuseeland'], ['Nicaragua', 'Nicaragua'], ['Niederlande', 'Niederlande'], ['Niger', 'Niger'], ['Nigeria', 'Nigeria'], ['Niue', 'Niue'], ['Nordkorea', 'Nordkorea'], ['Nordzypern', 'Nordzypern'], ['Norwegen', 'Norwegen'], ['Oman', 'Oman'], ['Österreich', 'Österreich'], ['Osttimor / Timor-Leste', 'Osttimor / Timor-Leste'], ['Pakistan', 'Pakistan'], ['Palästina', 'Palästina'], ['Palau', 'Palau'], ['Panama', 'Panama'], ['Papua-Neuguinea', 'Papua-Neuguinea'], ['Paraguay', 'Paraguay'], ['Peru', 'Peru'], ['Philippinen', 'Philippinen'], ['Polen', 'Polen'], ['Portugal', 'Portugal'], ['Ruanda', 'Ruanda'], ['Rumänien', 'Rumänien'], ['Russland', 'Russland'], ['Salomonen', 'Salomonen'], ['Sambia', 'Sambia'], ['Samoa', 'Samoa'], ['San Marino', 'San Marino'], ['São Tomé und Príncipe', 'São Tomé und Príncipe'], ['Saudi-Arabien', 'Saudi-Arabien'], ['Schweden', 'Schweden'], ['Schweiz', 'Schweiz'], ['Senegal', 'Senegal'], ['Serbien', 'Serbien'], ['Seychellen', 'Seychellen'], ['Sierra Leone', 'Sierra Leone'], ['Simbabwe', 'Simbabwe'], ['Singapur', 'Singapur'], ['Slowakei', 'Slowakei'], ['Slowenien', 'Slowenien'], ['Somalia', 'Somalia'], ['Somaliland', 'Somaliland'], ['Spanien', 'Spanien'], ['Sri Lanka', 'Sri Lanka'], ['St. Kitts und Nevis', 'St. Kitts und Nevis'], ['St. Lucia', 'St. Lucia'], ['St. Vincent und die Grenadinen', 'St. Vincent und die Grenadinen'], ['Südafrika', 'Südafrika'], ['Sudan', 'Sudan'], ['Südkorea', 'Südkorea'], ['Südossetien', 'Südossetien'], ['Südsudan', 'Südsudan'], ['Suriname', 'Suriname'], ['Swasiland', 'Swasiland'], ['Syrien', 'Syrien'], ['Tadschikistan', 'Tadschikistan'], ['Tansania', 'Tansania'], ['Thailand', 'Thailand'], ['Togo', 'Togo'], ['Tonga', 'Tonga'], ['Transnistrien', 'Transnistrien'], ['Trinidad und Tobago', 'Trinidad und Tobago'], ['Tschad', 'Tschad'], ['Tschechien', 'Tschechien'], ['Tunesien', 'Tunesien'], ['Türkei', 'Türkei'], ['Turkmenistan', 'Turkmenistan'], ['Tuvalu', 'Tuvalu'], ['Uganda', 'Uganda'], ['Ukraine', 'Ukraine'], ['Ungarn', 'Ungarn'], ['Uruguay', 'Uruguay'], ['Usbekistan', 'Usbekistan'], ['Vanuatu', 'Vanuatu'], ['Vatikanstadt', 'Vatikanstadt'], ['Venezuela', 'Venezuela'], ['Vereinigte Arabische Emirate', 'Vereinigte Arabische Emirate'], ['Vereinigte Staaten', 'Vereinigte Staaten'], ['Vereinigtes Königreich', 'Vereinigtes Königreich'], ['Vietnam', 'Vietnam'], ['Weißrussland', 'Weißrussland'], ['Westsahara', 'Westsahara'], ['Zentralafrikanische Republik', 'Zentralafrikanische Republik'], ['Zypern', 'Zypern']], label='Ihre Nationalität:') Occupation = models.StringField(choices=[['Student (High School)', 'Schüler*in'], ['Student (University)', 'Student*in'], ['Employed (Full Time)', 'In Vollzeit angestellt'], ['Employed (Part Time)', 'In Teilzeit angestellt'], ['Self-Employed', 'Selbstständig'], ['Unemployed', 'Beschäftigungslos'], ['Retired', 'In Rente'], ['Other', 'Andere']], label='Ihre Beschäftigung (bitte wählen Sie die Antwort, die Ihre Beschäftigung am besten beschreibt, selbst wenn sich Ihre genaue Beschäftigung nicht unter den Antwortmöglichkeiten befindet):') Degree = models.StringField(choices=[['High School (9th grade)', 'Hauptschulabschluss'], ['High School (10th grade)', 'Realschulabschluss'], ['High School', 'Abitur'], ['Apprenticeship', 'Berufsausbildung'], ["Bachelor's Degree", 'Bachelor'], ["Master's Degree", 'Master oder Diplom'], ['PhD', 'Promotion'], ['Other', 'Andere'], ['None', 'Keine']], label='Ihr höchster Bildungsstand (zum Zeitpunkt dieses Experiments erfolgreich abgeschlossen):') Income = models.StringField(choices=[['0 - 500', '0 € - 500 €'], ['500 - 1000', '500 € - 1 000 €'], ['1000 - 1500', '1 000 € - 1 500 €'], ['1500 - 3000', '1 500 € - 3 000 €'], ['3000 - 5000', '3 000 € - 5 000 €'], ['5000 - 10000', '5 000 € - 10 000 €'], ['more than 10 000 ', 'mehr als 10 000 €']], label='Bitte wählen Sie die Einkommensspanne, in dem Ihr monatliches Nettoeinkommen liegt:', widget=widgets.RadioSelect) household_size = models.StringField(choices=[['1', '1'], ['2', '2'], ['3', '3'], ['4', '4'], ['5+', '5 oder mehr']], label='Wie viele Menschen leben in Ihrem Haushalt (einschließlich Ihnen)?', widget=widgets.RadioSelectHorizontal) children = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nein']], label='Haben Sie Kinder?', widget=widgets.RadioSelectHorizontal) Environment_ghg = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nein']], label='Sind Sie der Meinung, dass Treibhausgasemissionen (wie z.B. CO2) zur Erwärmung der Erde beitragen?', widget=widgets.RadioSelectHorizontal) Environment_importance = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wie wichtig ist Ihnen Umweltschutz (Auf einer Skala von: 1 = gar nicht wichtig bis 5 = sehr wichtig)?', widget=widgets.RadioSelectHorizontal) Environment_effect = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wie stark, glauben Sie, können Sie durch Ihr Verhalten die Umwelt beeinflussen (Auf einer Skala von: 1 = gar nicht bis 5 = sehr stark)? ', widget=widgets.RadioSelectHorizontal) Environment_fear = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wie sehr haben Sie Angst vor den möglichen Auswirkungen des Klimawandels (Auf einer Skala von: 1 = gar keine Angst bis 5 = sehr viel Angst)?', widget=widgets.RadioSelectHorizontal) Envrionment_optimism = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wie optimistisch oder pessimistisch sind Sie, dass der Mensch den Klimawandel erfolgreich bekämpfen wird (Auf einer Skala von: 1 = sehr pessimistisch bis 5 = sehr optimistisch)?', widget=widgets.RadioSelectHorizontal) offsetting_familiar = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nein']], label='Hatten Sie vor Ihrer Teilnahme an diesem Experiment schon einmal von CO2 Kompensation gehört?', widget=widgets.RadioSelectHorizontal) Offsetting_understood = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nein']], label='Würden Sie von sich sagen, dass Sie verstanden haben wie CO2 Kompensation funktioniert?', widget=widgets.RadioSelectHorizontal) offsetting_before = models.IntegerField(choices=[[1, '0 Male'], [2, '1 Mal'], [3, '2 bis 4 Male'], [4, '5 Male oder öfter']], label='Wie oft haben Sie vor Ihrer Teilnahme an diesem Experiment CO2 Kompensation verwendet?', widget=widgets.RadioSelect) Offsetting_trust = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nein']], label='Vertrauen Sie CO2 Kompensationsprogrammen, Ihre Spende verantwortungsvoll zur Kompensation von CO2 einzusetzen?', widget=widgets.RadioSelectHorizontal) offsetting_effectiveness = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wie effektiv, glauben Sie, ist CO2 Kompensation darin CO2 Emissionen zu senken (Auf einer Skala von: 1 = sehr ineffektiv bis 5 = sehr effektiv)?', widget=widgets.RadioSelectHorizontal) diet_type = models.IntegerField(choices=[[1, 'vegan'], [2, 'vegetarisch'], [3, 'Mischkost'], [4, 'fleischlastig']], label='Bitte wählen Sie die Ernährungsart, die Ihre Ernährung am besten beschreibt:', widget=widgets.RadioSelect) Transport_type = models.IntegerField(choices=[[1, 'zu Fuß'], [2, 'Fahrrad oder Roller (nicht motorisiert)'], [3, 'öffentliche Verkehrsmittel'], [4, 'Auto, Motorrad, oder Motorroller'], [5, 'Flugzeug']], label='Wie kommen Sie in Ihrem Alltag meistens von A nach B?', widget=widgets.RadioSelect) e_mail = models.StringField(blank=True, label='Ihre E-Mail Adresse:') Attention_check = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Um sicherzustellen, dass die Teilnehmenden meines Experiments diese Fragen nicht zufällig beantworten, habe ich diese "Aufmerksamkeitskontrolle" eingebaut. Bitte wählen Sie den Wert 2 aus den Antwortmöglichkeiten unter dieser Frage.', widget=widgets.RadioSelectHorizontal) num_clicks = models.IntegerField() class Willkommen(Page): form_model = 'player' class Szenario(Page): form_model = 'player' class Entscheidung_1(Page): form_model = 'player' form_fields = ['contribution_zero'] @staticmethod def is_displayed(player): group = player.group return player.treatment_group == 1 class Entscheidung_2(Page): form_model = 'player' form_fields = ['contribution_moderate'] @staticmethod def is_displayed(player): group = player.group return player.treatment_group == 2 class Entscheidung_3(Page): form_model = 'player' form_fields = ['contribution_information'] @staticmethod def is_displayed(player): group = player.group return player.treatment_group == 3 class Fragebogen(Page): form_model = 'player' form_fields = ['Age', 'Gender', 'Nationality', 'Occupation', 'Degree', 'Income', 'household_size', 'children', 'Environment_ghg', 'Environment_importance', 'Attention_check', 'Environment_effect', 'Environment_fear', 'Envrionment_optimism', 'offsetting_familiar', 'Offsetting_understood', 'offsetting_before', 'Offsetting_trust', 'offsetting_effectiveness', 'diet_type', 'Transport_type'] class Vielen_Dank(Page): form_model = 'player' form_fields = ['e_mail'] class Moechten_Sie_mehr_erfahren(Page): form_model = 'player' form_fields = ['num_clicks'] @staticmethod def js_vars(player): return dict(url='https://germany.myclimate.org/de/offset_further_emissions') page_sequence = [Willkommen, Szenario, Entscheidung_1, Entscheidung_2, Entscheidung_3, Fragebogen, Vielen_Dank, Moechten_Sie_mehr_erfahren]