from otree.api import * doc = """ Question that lets you select multiple options (multi-select, multiple choice / multiple answer) The difference is that this one lets you customize the label of each checkbox, and requires at least 1 to be selected. """ class C(BaseConstants): NAME_IN_URL = 'Social_Questionare' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 TREATMENTS_NAMES = ['Base','Similar'] # def before_session_starts(self): # subsession = self.subsession # treatment = subsession.TREATMENT # print("questionareTreatment",treatment) # class Subsession(BaseSubsession): pass # TREATMENT = models.StringField(initial='Similar') # def creating_session(subsession: Subsession): # subsession.TREATMENT = 'Similar' # if 'spq_treatment' in subsession.session.config: # subsession.TREATMENT = subsession.session.config['spq_treatment'] class Group(BaseGroup): pass class Player(BasePlayer): treatment = models.StringField() type = models.IntegerField(initial=0) #Questoion1 q1Yes = models.BooleanField(blank=False) q1No = models.BooleanField(blank=True) answer1 = models.StringField(blank=True) #question2 q2Yes = models.BooleanField(blank=False) q2No = models.BooleanField(blank=True) answer2 = models.StringField(blank=True) #question3 evaluation = models.StringField(blank=False) #question4 q4Yes = models.BooleanField(blank=False) q4No = models.BooleanField(blank=True) answer4 = models.StringField(blank=True) #question Kunde kunde_q1 = models.IntegerField( label="Der angegebene Durchschnitt der 3er Gruppe war entscheidend für mich – lag jemand unter diesem Durchschnitt, habe ich eine schlechtere Bewertung vergeben.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q2 = models.IntegerField( label="Ich habe die erreichte Punktzahl mit den Leistungen vorheriger Transaktionspartner verglichen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q3 = models.IntegerField( label="Da ich die Aufgaben selbst bearbeitet habe, konnte ich mir bereits vorab eine Meinung darüber bilden, was machbar ist. Daran habe ich mich bei der Bewertung orientiert.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q4 = models.IntegerField( label="Ich habe mich an den Bewertungen orientiert, die mein Transaktionspartner zuvor von anderen Spielern erhalten hat. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q5 = models.IntegerField( label="Wenn mir jemand sympathisch war, ist dies mit in meine Bewertung eingeflossen. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q6 = models.IntegerField( label="Wenn mir jemand unsympathisch war, ist dies mit in meine Bewertung eingeflossen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q7 = models.IntegerField( label="Ich habe die Bewertungen, die ich erhalten habe, als fair empfunden. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q8 = models.IntegerField( label="Mit der Vergabe einer schlechten Bewertung konnte ich meinem Transaktionspartner schaden.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q9 = models.IntegerField( label="Ich habe (hätte) mich bei der Vergabe einer schlechten Bewertung unwohl gefühlt. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) kunde_q10 = models.IntegerField( label="Angesichts der Tatsache, dass ich selbst Aufgaben bearbeitet habe, hätte ich mir mehr Einsatz von meinen Transaktionspartnern erhofft. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Anbieter questions anbieter_q1 = models.IntegerField( label="Wenn mir jemand sympathisch war, ist dies mit in meine Bewertung eingeflossen. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) anbieter_q2 = models.IntegerField( label="Wenn mir jemand unsympathisch war, ist dies mit in meine Bewertung eingeflossen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) anbieter_q3 = models.IntegerField( label="Ich habe die Bewertungen, die ich erhalten habe, als fair empfunden", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) anbieter_q4 = models.IntegerField( label="Ich habe (hätte) mich bei der Vergabe einer schlechten Bewertung unwohl gefühlt. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Seite3 PE01 = models.IntegerField( label="1. Wie sehr wären Sie bereit, jemanden zu bestrafen, der Sie unfair behandelt, selbst wenn dies für Sie negative Konsequenzen haben würde?", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE02 = models.IntegerField( label="2. Wie sehr wären Sie bereit, jemanden zu bestrafen, der Sie unfair behandelt, selbst wenn dies für Sie negative Konsequenzen haben würde?", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE03 = models.IntegerField( label="3. Wie sehr wären Sie bereit, für einen guten Zweck zu geben, ohne etwas als Gegenleistung zu erwarten? ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE04 = models.IntegerField( label="4. Wie sehr sind Sie ganz allgemein bereit, Risiken einzugehen? ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE05 = models.IntegerField( label="5. Wenn mir jemanden einen Gefallen tut, bin ich bereit ihn zu erwidern.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE06 = models.IntegerField( label="6. Wenn ich sehr ungerecht behandelt werde, räche ich mich bei der ersten Gelegenheit, selbst wenn Kosten entstehen, um das zu tun. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE07 = models.IntegerField(label="7. Stellen Sie sich die folgende Situation vor: Heute haben Sie unerwartet 1000 Euro erhalten. Wie viel von dem Geld würden Sie einem guten Zweck spenden? (in Euro) ", min=0, max=1000) PE08 = models.IntegerField(widget=widgets.RadioSelectHorizontal, label="8. Bitte denken Sie darüber nach, was Sie in der folgenden Situation tun würden. Sie sind in einer Gegend in der Sie sich nicht auskennen und merken, dass Sie sich verlaufen haben. Sie fragen einen Fremden oder eine Fremde nach dem Weg. Der/die Fremde bietet Ihnen an, Sie zum Ziel zu bringen. Ihnen zu helfen kostet den/der Fremden ungefähr 20 Euro insgesamt. Jedoch, sagt der/die Fremde, dass er bzw. sie kein Geld von Ihnen möchte. Sie haben sechs Geschenke bei sich. Das billigste Geschenk kostet 5 Euro, das teuerste Geschenk kostet 30 Euro. Welches Geschenk würden Sie dem/der Fremden geben? ", choices=[5,10,15,20,25,30]) #Seite 5 PE09 = models.IntegerField( label="1. Ich empfinde warmherzige Gefühle für Leute, denen es weniger gut geht als mir.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE10 = models.IntegerField( label="2. Ich finde es schwierig, Dinge aus einer anderen Perspektive zu sehen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE11 = models.IntegerField( label="3. Ich habe wenig Mitgefühl für Menschen, die gerade Probleme haben.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE12 = models.IntegerField( label="4. Ich versuche, bei Meinungsverschiedenheiten zuerst alle Ansichten zu betrachten, bevor ich eine Entscheidung treffe.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE13 = models.IntegerField( label="5. Wenn ich sehe, wie jemand ausgenutzt wird, habe ich das Gefühl, ihn schützen zu müssen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE14 = models.IntegerField( label="6. Ich versuche meine Freunde besser zu verstehen, indem ich mit vorstelle, wie die Dinge aus ihrer Perspektive aussehen könnten.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE15 = models.IntegerField( label="7. Das Unglück anderer lässt mich eher unberührt. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE16 = models.IntegerField( label="8. Wenn ich mir sicher bin, dass ich recht habe, vergeude ich nicht viel Zeit damit, mir die Argumente von anderen anzuhören.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE17 = models.IntegerField( label="9. Wenn ich sehe, dass eine Person unfair behandelt wird, empfinde ich wenig Mitleid. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE18 = models.IntegerField( label="10. Mich berühren Dinge sehr, auch wenn ich sie nur beobachte.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE19 = models.IntegerField( label="11. Ich glaube, dass jedes Problem zwei Seiten hat, und versuche beide zu sehen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE20 = models.IntegerField( label="12. Ich würde mich selbst als eine gutmütige Person bezeichnen. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE21 = models.IntegerField( label="13. Wenn ich wütend auf jemanden bin, versuche ich, mich für eine Weile in die Lage der anderen Person zu versetzen. ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) PE22 = models.IntegerField( label="14. Bevor ich jemanden kritisiere, versuche ich mir vorzustellen, wie die Sache aus seiner Sicht aussieht.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelectHorizontal, ) #Seite 6 PE23 = models.IntegerField( label="…beim Autofahren ein?", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE24 = models.IntegerField( label="…bei Geldanlagen ein? ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE25 = models.IntegerField( label="…bei Freizeit und Sport ein? ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE26 = models.IntegerField( label="…bei Ihrer beruflichen Karriere ein? ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE27 = models.IntegerField( label="…bei Ihrer Gesundheit ein?", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE28 = models.IntegerField( label="…beim Vertrauen in fremde Menschen ein?", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE28a = models.IntegerField( label="2. Sind Sie im Allgemeinen ein Mensch, der lange überlegt und nachdenkt, bevor er handelt, also gar nicht impulsiv ist? Oder sind Sie ein Mensch, der ohne lange zu überlegen handelt, also sehr impulsiv ist? (1=gar nicht impulsiv, 10=sehr impulsiv) ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE29 = models.IntegerField( label="3. Wie oft denken Sie über Ihre Zukunft nach? (1=gar nicht, 10=sehr oft) ", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) PE30 = models.IntegerField( label="4. Wie sehr machen Sie sich Sorgen über eine Inflation? (1=gar keine Sorgen, 10=sehr große Sorgen)", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelectHorizontal, ) # PAGES class MyWaitPage(WaitPage): def after_all_players_arrive(group: Group): pass # title and body text for the wait page def title_text(self): return "Bitte warten" def body_text(self): return "Bitte warten Sie, bis das Experiment weitergeht." class Welcome(Page): def vars_for_template(player: Player): player.type = player.participant.vars.get('type') player.treatment = player.session.vars.get('treatment') print("type", player.type) print("type", player.treatment) class Experiment_Q(Page): form_model = 'player' form_fields = [ 'q1Yes', 'q1No', 'answer1', 'q2Yes', 'q2No', 'answer2', 'evaluation', 'q4Yes', 'q4No', 'answer4', ] # @staticmethod # def vars_for_template(player: Player): # player.type = player.participant.vars['type'] # print("type",player.type) class KundeSeite_Base(Page): form_model = 'player' form_fields = ['kunde_q1', 'kunde_q2', 'kunde_q3', 'kunde_q4', 'kunde_q7', 'kunde_q8', 'kunde_q9', 'kunde_q10' ] def is_displayed(player: Player): return player.treatment =='Base' and player.type == 0 class KundeSeite_Similarity(Page): form_model = 'player' form_fields = ['kunde_q1', 'kunde_q2', 'kunde_q3', 'kunde_q4', 'kunde_q5', 'kunde_q6', 'kunde_q7', 'kunde_q8', 'kunde_q9', 'kunde_q10', ] def is_displayed(player: Player): return player.treatment =='Similar' and player.type == 0 class AnbieterSeite_Base(Page): form_model = 'player' form_fields = ['anbieter_q3', 'anbieter_q4', ] def is_displayed(player: Player): return player.treatment =='Base' and player.type != 0 class AnbieterSeite_Similarity(Page): form_model = 'player' form_fields = ['anbieter_q1', 'anbieter_q2', 'anbieter_q3', 'anbieter_q4', ] def is_displayed(player: Player): return player.treatment =='Similar' and player.type != 0 class Personality_1(Page): form_model = 'player' form_fields = ['PE01', 'PE02', 'PE03', 'PE04', 'PE05', 'PE06', 'PE07', 'PE08' ] class Personality_2(Page): form_model = 'player' form_fields = [ 'PE09', 'PE10', 'PE11', 'PE12', 'PE13', 'PE14', 'PE15', 'PE16', 'PE17', 'PE18', 'PE19', 'PE20', 'PE21', 'PE22', ] class Personality_3(Page): form_model = 'player' form_fields = [ 'PE23', 'PE24', 'PE25', 'PE26', 'PE27', 'PE28', 'PE28a', 'PE29', 'PE30' ] class Final(Page): pass #Welcome excluded, not necessary page_sequence = [MyWaitPage,Welcome,Experiment_Q ,KundeSeite_Base, KundeSeite_Similarity, AnbieterSeite_Base,AnbieterSeite_Similarity,Personality_1,Personality_2,Personality_3,Final]