from otree.api import * doc = """ Fragebogen für das WB Norms Appropriateness Experiment 4 Treatments: control, T1 und T2, T3 control: Abfrage wie appropriate WB/silent ist; T1: Norm Nudge 1; T2: Norm Nudge 2; T3 Norm Nudge beides """ def creating_session(subsession): subsession.TREATMENT = 'Control' #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_wb_norm_app' 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="Have you ever participated in such an incentivized economic experiment before?", choices=[ [1, "Yes"], [0, "No"] ], widget=widgets.RadioSelect, ) InstruktionenJa = models.BooleanField(blank=False) InstruktionenNein = models.BooleanField(blank=True) InstruktionenText = models.StringField(blank=True) InstruktionenJ = models.BooleanField( choices=[ [True, "Yes"], [False, "No"], ], widgets=widgets.RadioSelect, ) Action_Wrongdoing = models.IntegerField( label="To what extent do you agree with the statement that keeping part of the donation budget can be considered as wrongdoing? (1=do not agree at all; 5=fully agree)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Seite 2 A-Spieler SpielerAQ1 = models.IntegerField( label="To what extent did you feel connected to your team member (Player B) in the first part of the experiment through the joint counting task? (1=not connected at all; 5=very connected)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ2 = models.IntegerField( label="How much did you consider the potential reaction of Player B when making your decision about the donation budget? (1=not considered at all; 5=strongly considered)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ3 = models.StringField( label="To what extent did you consider the possibility of exclusion (in Part II) when making your decision in Part I? (1=not considered at all; 5=considered strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ4 = models.IntegerField( label="How do you think the majority of Players A decided regarding the donation budget?", choices=[ [0, "Transfer the full donation budget to Cancer Research UK"], [1, "Keep part of the donation budget for themselves"] ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ5 = models.IntegerField( label="Do you think other participants expected you to behave in a certain way?", choices=[ [0, "No"], [1, "Yes. I think other participants expected me to transfer the full donation budget to Cancer Research UK"], [2, "Yes. I think other participants expected me to keep part of the donation budget for myself"] ], widget=widgets.RadioSelect, ) SpielerAQ6 = models.IntegerField( label="To what extent do you think there is an agreement on how to behave in the situation regarding the donation budget? (1=strong disagreement; 5=strong agreement)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ7 = models.IntegerField( label="How much did you consider whether your decision was morally correct when deciding about the donation budget? (1=considered not at all; 5=considered strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ8 = models.IntegerField( label="How confident are you with your answer how appropriate the majority of participants finds transferring the full donation budget to Cancer Research UK? (1=it was a guess; 7=very confident)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ9 = models.IntegerField( label="How confident are you with your answer how appropriate the majority of participants finds keeping part of the donation budget for Player A? (1=it was a guess; 7=very confident)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ10 = models.IntegerField( label="I have a strong need to belong. (1=strongly disagree; 5=strongly agree)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ11 = models.IntegerField( label="I always like to know what others in a similar situation would do. (1=disagree strongly; 5=agree strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ12 = models.IntegerField( label="I am not the type of person who compares often with others. (1=disagree strongly; 5=agree strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #T1 -T3 SpielerAQ13 = models.IntegerField( label="Please indicate which information you received before making your decision about the donation budget: 'In previous sessions of the same experiment, the majority of participants in the role of Player A indicated that...'", choices=[ [1, "'...transferring the full donation budget is somewhat or very appropriate.'"], [2, "'...keeping part of the donation budget is somewhat or very inappropriate.'"], [3, "both"], [4, "no information was given"] ], widget=widgets.RadioSelect, ) SpielerAQ14 = models.IntegerField( label="In previous sessions of the same experiment, what percentage of participants in the role of Player A do you think indicated that transferring the full donation budget is somewhat or very appropriate.", choices=[ [0, "0-10%"], [1, "11-20%"], [2, "21-30%"], [3, "31-40%"], [4, "41-50%"], [5, "51-60%"], [6, "61-70%"], [7, "71-80%"], [8, "81-90%"], [9, "91-100%"], ], widget=widgets.RadioSelectHorizontal, ) SpielerAQ15 = models.IntegerField( label="In previous sessions of the same experiment, what percentage of participants in the role of Player A do you think indicated that keeping part of the donation budget is somewhat or very appropriate.", choices=[ [0, "0-10%"], [1, "11-20%"], [2, "21-30%"], [3, "31-40%"], [4, "41-50%"], [5, "51-60%"], [6, "61-70%"], [7, "71-80%"], [8, "81-90%"], [9, "91-100%"], ], widget=widgets.RadioSelectHorizontal, ) #Eventuell weitere Fragen A Spieler 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, ) 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="To what extent did you feel connected to your team member (Player A) in the first part of the experiment through the joint counting task? (1=not connected at all; 5=very connected)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ2 = models.IntegerField( label="How much did you consider how your team member (Player A) will behave when reacting to Player A's behaviour? (1=not considered at all; 5=strongly considered)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ3 = models.StringField( label="To what extent did you consider the possibility of exclusion (in Part II) when making your decision in Part I? (1=not considered at all; 5=considered strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ4 = models.IntegerField( label="How do you think the majority of Players B decided regarding the reaction to Player A's behaviour?", choices=[ [0, "Overlook the behaviour of Player A"], [1, "Report the behaviour of Player A"] ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ5 = models.IntegerField( label="Do you think other participants expected you to behave in a certain way?", choices=[ [0, "No"], [1, "Yes. I think other participants expected me to overlook the behaviour of Player A"], [2, "Yes. I think other participants expected me to report the behaviour of Player A"] ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ6 = models.IntegerField( label="To what extent do you think there is an agreement on how to behave in the situation regarding the reaction to Player A's behaviour? (1=strong disagreement; 5=strong agreement)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ7 = models.IntegerField( label="How much did you consider whether your decision was morally correct when reacting to the behaviour of Player A? (1=considered not at all; 5=considered strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ8 = models.IntegerField( label="How confident are you with your answer how appropriate the majority of participants finds reporting the behaviour of Player A? (1=it was a guess; 7=very confident)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ9 = models.IntegerField( label="How confident are you with your answer how appropriate the majority of participants finds overlooking the behaviour of Player A? (1=it was a guess; 7=very confident)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ10 = models.IntegerField( label="I have a strong need to belong. (1=strongly disagree; 5=strongly agree)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ11 = models.IntegerField( label="I always like to know what others in a similar situation would do. (1=disagree strongly; 5=agree strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ12 = models.IntegerField( label="I am not the type of person who compares often with others. (1=disagree strongly; 5=agree strongly)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) # T1 -T3 B-Spieler SpielerBQ13 = models.IntegerField( label="Please indicate which information you received before reacting to the behaviour of Player A: 'In previous sessions of the same experiment, the majority of participants in the role of Player B indicated that...'", choices=[ [1, "'...reporting the behaviour of Player A is somewhat or very appropriate.'"], [2, "'...overlooking the behaviour of Player A is somewhat or very inappropriate.'"], [3, "both"], [4, "no information was given"] ], widget=widgets.RadioSelect, ) SpielerBQ14 = models.IntegerField( label="In previous sessions of the same experiment, what percentage of participants in the role of Player B do you think indicated that reporting the behaviour of Player A is somewhat or very appropriate.", choices=[ [0, "0-10%"], [1, "11-20%"], [2, "21-30%"], [3, "31-40%"], [4, "41-50%"], [5, "51-60%"], [6, "61-70%"], [7, "71-80%"], [8, "81-90%"], [9, "91-100%"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ15 = models.IntegerField( label="In previous sessions of the same experiment, what percentage of participants in the role of Player B do you think indicated that overlooking the behaviour of Player A is somewhat or very appropriate.", choices=[ [0, "0-10%"], [1, "11-20%"], [2, "21-30%"], [3, "31-40%"], [4, "41-50%"], [5, "51-60%"], [6, "61-70%"], [7, "71-80%"], [8, "81-90%"], [9, "91-100%"], ], widget=widgets.RadioSelectHorizontal, ) SpielerBQ16 = 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, ) SpielerBQ17 = 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, ) SpielerBQ17 = 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, ) SpielerBQ18 = 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, ) SpielerBQ19 = 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, ) SpielerBQ20 = 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="In your decision whether to solve the task in part II of the experiment alone or as a team, to what extent have you considered what Player 2 decided in the first part of the experiment? (1=have not considered at all; 7=have totally considered)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler1Q2 = models.IntegerField( label="Suppose there were another group member and together you had to decide whether to solve the task in part II of the experiment alone or as a team. Would that have changed your decision regarding Player 2?", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) Spieler2Q1 = models.IntegerField( label="How high have you perceived the risk that Player 1 will decide in part II of the experiment to solve the task alone? (1=not high at all; 7=very high)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q2 = models.IntegerField( label="In the decision of Player 1 whether to solve the task in part II of the experiment alone or as a team, to what extent do you think Player 1 considered how you decided in the first part of the experiment? (1= not at all; 7=to a large extent)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q3 = models.IntegerField( label="To what extent did the decision of Player 1 whether to solve the task alone or in the team affect your decision in part I of the experiment? (1= not at all; 7=to a large extent)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], ], widget=widgets.RadioSelectHorizontal, ) Spieler2Q4 = models.IntegerField( label="Would you have changed your decision in part I of the experiment if two instead of just one Player had to decide whether to solve the task alone or as a team? ", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) #Seite 3 Fragen zum Spendenverhalten SpendeQ1 = models.IntegerField( label="How often have you donated to charity projects?", choices=[ [0, "Never"], [1, "Sometimes"], [2, "Regularly"], ], widget=widgets.RadioSelectHorizontal, ) SpendeQ2 = models.IntegerField( label="To what extent do you agree with the statement that Cancer Research UK should be supported? (1=strongly disagree; 5=strongly agree)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpendeQ3 = models.IntegerField( label="To what extent do you agree with the statement that you consider Cancer Research UK to be trustworthy? (1=strongly disagree; 5=strongly agree)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) SpendeQ4 = models.IntegerField( label="To what extent do you agree with the statement that withholding a portion of the donation budget to Cancer Research UK constitutes misconduct? (1=strongly disagree; 5=strongly agree)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Seite 4 Moral Foundations Questionnaire TREATED = models.IntegerField( label="Whether or not someone suffered emotionally", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) UNFAIRLY = models.IntegerField( label="Whether or not someone acted unfairly", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) RIGHTS = models.IntegerField( label="Whether or not someone was denied his or her rights ", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) LOVECOUNTRY = models.IntegerField( label="Whether or not someone’s action showed love for his or her country ", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) BETRAY = models.IntegerField( label="Whether or not someone did something to betray his or her group", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) LOYALTY = models.IntegerField( label="Whether or not someone showed a lack of loyalty ", choices=[ [0, "not at all relevant (This consideration has nothing to do with my judgments of right and wrong)"], [1, "not very relevant"], [2, "slightly relevant"], [3, "somewhat relevant"], [4, "very relevant"], [5, "extremely relevant (This is one of the most important factors when I judge right and wrong)"], ], widget=widgets.RadioSelect, ) FAIRLY = models.IntegerField( label="When the government makes laws, the number one principle should be ensuring that everyone is treated fairly.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) JUSTICE = models.IntegerField( label="Justice is the most important requirement for a society.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) RICH = models.IntegerField( label="I think it’s morally wrong that rich children inherit a lot of money while poor children inherit nothing.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) HISTORY = models.IntegerField( label="I am proud of my country’s history.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) FAMILY = models.IntegerField( label="People should be loyal to their family members, even when they have done something wrong.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) TEAM = models.IntegerField( label="It is more important to be a team Player than to express oneself.", choices=[ [0, "strongly disagree"], [1, "moderately disagree"], [2, "slightly disagree"], [3, "slightly agree"], [4, "moderately agree"], [5, "strongly agree"], ], widget=widgets.RadioSelect, ) #Seite 5 Experiences ObsWb = models.IntegerField( label="Have you ever observed wrongdoing in your former or current organization?", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) WB = models.IntegerField( label="Have you ever reported a colleague who committed wrongdoing?", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) WBOthers = models.IntegerField( label="Have you ever experienced someone reporting a colleague because of wrongdoing?", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) WBPrac = models.IntegerField( label="Do you think it is against the usual practice in your current organization to report a colleague even if he or she has committed wrongdoing?", choices=[ [0, "No"], [1, "Yes"], ], widget=widgets.RadioSelect, ) IdOrg = models.IntegerField( label="How strong do you identify yourself with your current organization? (1=not at all; 5=very much)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #AttentionCheck Questions AC = models.IntegerField( label="Click on the option 2 on the following scale. (1=not at all; 5=very much)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) AC_1 = models.IntegerField( label="Click on the option 2 on the following scale. (1=not at all; 5=very much)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) AC_2 = models.IntegerField( label="Click on the option 2 on the following scale. (1=not at all; 5=very much)", choices=[ [0, "0"], [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Seite 6 Demographische Angaben age = models.IntegerField( label="What is your age?", max=100, min=16 ) gender = models.IntegerField( label="Which gender do you feel you belong to?", choices=[ [1, "female"], [2, "male"], [3, "non-binary"], ], widget=widgets.RadioSelect, ) major = models.StringField( label="Please select the highest educational qualification you have achieved so far.", choices=[ [1, "Student at school"], [2, "School finished without graduation"], [3, "Secondary school diploma"], [4, "Completed apprenticeship"], [5, "High school diploma"], [6, "University degree (Bachelor)"], [7, "University degree (Master)"], [8, "PhD"], ], widget=widgets.RadioSelect, ) employment = models.StringField( label="Please indicate your employment sector", choices=[ [1, "Agriculture"], [2, "Food and Natural Resources "], [3, "Architecture and Construction"], [4, "Arts"], [5, "Business Management & Administration"], [6, "Education & Training"], [7, "Finance"], [8, "Government & Public Administration"], [9, "Medicine"], [10, "Information Technology"], [11, "Legal"], [12, "Policing"], [13, "Military"], [14, "Manufacturing"], [15, "Marketing & Sales"], [16, "Retail"], [17, "Science, Technology, Engineering & Mathematics"], [18, "Social Sciences"], [19, "Transportation, Distribution & Logistics"], [20, "Other"], ], widget=widgets.RadioSelect, ) job = models.StringField( label="Which of the following best describes your role at work?", choices=[ [1, "Upper Management"], [2, "Trained Professional"], [3, "Middle Management"], [4, "Skilled Laborer"], [5, "Junior Management"], [6, "Consultant"], [7, "Administrative Staff"], [8, "Temporary Employee"], [9, "Support Staff"], [10, "Researcher"], [11, "Student"], [12, "Self-employed/Partner"], [13, "Other"], ], widget=widgets.RadioSelect, ) year = models.IntegerField( label="Aktuelles Fachsemester", max=100, min=1 ) # Seite 7 Final Consc = models.IntegerField( label="Have you conscientiously participated in the experiment and answered the questions of the study so that we can use your data for research? Answer to this question has no consequences for you. It only helps us to better assess the data from the study.", choices=[ [0, "Yes, I participated conscientiously."], [1, "No, I just wanted to have a look and/or clicked through."], ], widget=widgets.RadioSelect, ) # PAGES class WelcomeWaitPage(WaitPage): def after_all_players_arrive(group: Group): for p in group.get_players(): if p.subsession.STANDALONE==False: # Spielerdaten bekommen aus wb treatment session 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 else: #Fragebogen wurde alleine gestartet if p.id_in_group % 4 == 3: p.roletypeA=True p.spieler1=True elif p.id_in_group % 4 == 2: p.roletypeA = True p.spieler1 = False elif p.id_in_group % 4 == 1: p.roletypeA = False p.spieler1 = True else: #0 p.roletypeA = False p.spieler1 = 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): def vars_for_template(player: Player): if player.subsession.STANDALONE == False: # Spielerdaten bekommen aus wb treatment session if player.participant.vars['spieler'] == 'Spieler1': player.spieler1 = True else: player.spieler1 = False; if player.participant.vars['playertype'] == 'A': player.roletypeA = True else: player.roletypeA = False else: # Fragebogen wurde alleine gestartet if player.id_in_group % 4 == 3: player.roletypeA = True player.spieler1 = True elif player.id_in_group % 4 == 2: player.roletypeA = True player.spieler1 = False elif player.id_in_group % 4 == 1: player.roletypeA = False player.spieler1 = True else: # 0 player.roletypeA = False player.spieler1 = False class FeedExp(Page): form_model = 'player' form_fields = [ 'InstruktionenJa', 'InstruktionenNein', 'InstruktionenText', ] class SpielerAPage(Page): form_model = 'player' form_fields = [ 'SpielerAQ1', 'SpielerAQ2', 'SpielerAQ3', 'SpielerAQ4', 'SpielerAQ5', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ8', 'SpielerAQ9', 'SpielerAQ10', 'SpielerAQ11', 'SpielerAQ12' ] def is_displayed(player: Player): #nur spieler vom typ A anzeigen und Control return (player.roletypeA == True and (player.subsession.TREATMENT == 'Control' or player.subsession.TREATMENT=='T4')) or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen #Only T1 class SpielerAPageT1(Page): form_model = 'player' form_fields = [ 'SpielerAQ1', 'SpielerAQ2', 'SpielerAQ3', 'SpielerAQ4', 'SpielerAQ5', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ10', 'SpielerAQ11', 'SpielerAQ12', 'SpielerAQ13', 'SpielerAQ14', 'SpielerAQ15' ] def is_displayed(player: Player): #nur spieler vom typ A anzeigen return (player.roletypeA==True and player.subsession.TREATMENT=='T1') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen #Only T2 class SpielerAPageT2(Page): form_model = 'player' form_fields = [ 'SpielerAQ1', 'SpielerAQ2', 'SpielerAQ3', 'SpielerAQ4', 'SpielerAQ5', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ10', 'SpielerAQ11', 'SpielerAQ12', 'SpielerAQ13', 'SpielerAQ14', 'SpielerAQ15' ] 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 #Only T3 class SpielerAPageT3(Page): form_model = 'player' form_fields = [ 'SpielerAQ1', 'SpielerAQ2', 'SpielerAQ3', 'SpielerAQ4', 'SpielerAQ5', 'SpielerAQ6', 'SpielerAQ7', 'SpielerAQ10', 'SpielerAQ11', 'SpielerAQ12', 'SpielerAQ13', 'SpielerAQ14', 'SpielerAQ15' ] def is_displayed(player: Player): #nur spieler vom typ A anzeigen return (player.roletypeA==True and player.subsession.TREATMENT=='T3') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen class SpielerBPage(Page): form_model = 'player' form_fields = [ 'SpielerBQ1', 'SpielerBQ3', 'SpielerBQ4', 'SpielerBQ5', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ11', 'SpielerBQ12' ] def is_displayed(player: Player): # nur spieler vom typ B anzeigen für control und T4 return (player.roletypeA==False and (player.subsession.TREATMENT == 'Control' or player.subsession.TREATMENT=='T4')) or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen #only for T1 class SpielerBPageT1 (Page): form_model = 'player' form_fields = [ 'SpielerBQ1', 'SpielerBQ3', 'SpielerBQ4', 'SpielerBQ5', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ11', 'SpielerBQ12', 'SpielerBQ13', 'SpielerBQ14', 'SpielerBQ15' ] def is_displayed(player: Player): # nur spieler vom typ B anzeigen return (player.roletypeA == False and player.subsession.TREATMENT=='T1') or player.subsession.STANDALONE==True #wenn Fragebogen Standalone ist dann alle Seiten anzeigen # only for T2 class SpielerBPageT2(Page): form_model = 'player' form_fields = [ 'SpielerBQ1', 'SpielerBQ3', 'SpielerBQ4', 'SpielerBQ5', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ11', 'SpielerBQ12', 'SpielerBQ13', 'SpielerBQ14', 'SpielerBQ15' ] 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 # only for T3 class SpielerBPageT3(Page): form_model = 'player' form_fields = [ 'SpielerBQ1', 'SpielerBQ3', 'SpielerBQ4', 'SpielerBQ5', 'SpielerBQ6', 'SpielerBQ7', 'SpielerBQ8', 'SpielerBQ9', 'SpielerBQ10', 'SpielerBQ11', 'SpielerBQ12', 'SpielerBQ13', 'SpielerBQ14', 'SpielerBQ15' ] def is_displayed(player: Player): # nur spieler vom typ B anzeigen return (player.roletypeA == False and player.subsession.TREATMENT == 'T3') or player.subsession.STANDALONE == True # wenn Fragebogen Standalone ist dann alle Seiten anzeigen class ZweiterTeilSP1(Page): form_model = 'player' form_fields = ['Spieler1Q1'] @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', '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', 'Spieler2Q2', ] @staticmethod def is_displayed(player: Player): return not player.spieler1 #and player.subsession.TREATMENT=='Control' class FragenMFQ(Page): form_model = 'player' form_fields = ['TREATED', 'UNFAIRLY', 'RIGHTS', 'LOVECOUNTRY', 'BETRAY', 'LOYALTY', 'FAIRLY', 'JUSTICE', 'RICH', 'HISTORY', 'FAMILY', 'TEAM' ] class SpendenF(Page): form_model = 'player' form_fields = ['SpendeQ1', 'SpendeQ2', 'SpendeQ3', 'SpendeQ4' ] class Experiences(Page): form_model = 'player' form_fields = [ 'ObsWb', 'WB', 'WBOthers', 'AC' ] class Demographie(Page): form_model = 'player' form_fields = [ 'age', 'gender', 'major', 'employment', 'job' ] class ConscientiousQuestion(Page): form_model = 'player' form_fields = [ 'Consc' ] class Final(Page): pass #page_sequence = [MyWaitPage,MyWelcomePage, FeedExp, test ,MyPage, MyPage1, MyPage3,MyPage4,MyPage5,MyPage6,MyPage7,Final] page_sequence = [MyWelcomePage, FeedExp, SpielerAPage,SpielerAPageT1,SpielerAPageT2,SpielerAPageT3, SpielerBPage, SpielerBPageT1,SpielerBPageT2,SpielerBPageT3,ZweiterTeilSP1,ZweiterTeilSP2,FragenMFQ, SpendenF, Experiences,Demographie,ConscientiousQuestion,Final]