from otree.api import * doc = """ Ex-Post Fragebogen für Experiment social proximity and rating behavior 2 Treatments: social_interaction, control """ class C(BaseConstants): NAME_IN_URL = 'social_proximity_single_questionaire' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 NUM_PAGES = 5 #wieviele Seiten Fragebogen hat class Subsession(BaseSubsession): TREATMENT = models.StringField(initial='control') SOCIAL_INTERACTION = models.BooleanField(initial=False) STANDALONE = models.BooleanField(initial=True) class Group(BaseGroup): pass #wird lang mit den ganzen Fragen class Player(BasePlayer): type = models.StringField(initial="customer") customer = models.BooleanField(initial=True) current_page = models.IntegerField(initial=1) #Questions Questionaire #On one Page #Question: Participation ExpTeilnahme = models.BooleanField( label="1. Haben Sie zuvor schon einmal an einem Experiment teilgenommen?", choices=[ [True, "Ja"], [False, "Nein"], ], widget=widgets.RadioSelectHorizontal, ) #Question: Instructions InstructionsYes = models.BooleanField(blank=False) InstructionsNo = models.BooleanField(blank=True) InstructionsNoText = models.StringField(blank=True) #Question: Task TaskYes = models.BooleanField(blank=False) TaskNo = models.BooleanField(blank=True) TaskNoText = models.StringField(blank=True) rating_experience = models.IntegerField( label="6. Wie regelmäßig bewerten Sie Produkte oder Dienstleistungen?", choices=[ [1, "nie"], [2, "selten"], [3, "ab und zu"], [4, "häufig"], [5, "sehr häufig"], ], widget=widgets.RadioSelectHorizontal, ) ##On one Page #Set of Questions about the tasks seventask_easy = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" anspruchsvoll (1)__________________ einfach (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) seventask_boring = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" langweilig (1)_________________ unterhaltsam (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) seventask_effort = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" anstrengend (1)_______________entspannend (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) analogy_easy = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" anspruchsvoll (1)__________________ einfach (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) analogy_boring = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" langweilig (1)_________________ unterhaltsam (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) analogy_effort = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" anstrengend (1)_______________entspannend (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) numsequence_easy = models.IntegerField(widget=widgets.RadioSelectHorizontal, label="anspruchsvoll (1)__________________ einfach (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) numsequence_boring = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" langweilig (1)_________________ unterhaltsam (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) numsequence_effort = models.IntegerField(widget=widgets.RadioSelectHorizontal, label=" anstrengend (1)_______________entspannend (7) ", choices=[1, 2, 3, 4, 5, 6, 7]) analogy_training = models.IntegerField( label="4. Haben Sie vorher schon Analogien gelöst?", choices=[ [0, "nein"], [1, "einmal"], [2, "mehrmals"], ], widget=widgets.RadioSelectHorizontal, ) numsequence_training = models.IntegerField( label="5. Haben Sie vorher schon Zahlenreihen gelöst?", choices=[ [0, "nein"], [1, "einmal"], [2, "mehrmals"], ], widget=widgets.RadioSelectHorizontal, ) ##On one Page #Question: Feedback on rating of transaction partner evaluation = models.StringField(blank=False) #Question: How own performance affected rating of transaction partner EvaluationYes = models.BooleanField(blank=False) EvaluationNo = models.BooleanField(blank=True) EvaluationNoText = models.StringField(blank=True) #Customer and Seller specific Questions #On one Page respectively: customer_socialinteraction, customer_control, seller_socialinteraction, seller_control customer_groupavg = 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.RadioSelect, ) customer_comparison = 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.RadioSelect, ) customer_owntask = 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.RadioSelect, ) customer_previousrating = 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.RadioSelect, ) customer_sympathy = 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.RadioSelect, ) customer_nosympathy = 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.RadioSelect, ) customer_fairrating = 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.RadioSelect, ) customer_badrating = 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.RadioSelect, ) customer_badconscience = 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.RadioSelect, ) customer_moreexpectation = 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.RadioSelect, ) customer_ratingimportant = models.IntegerField( label="Mit der Abgabe der Bewertung konnte ich dazu beitragen, wichtige Informationen zu erzeugen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) #Seller Questions seller_sympathy = 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.RadioSelect, ) seller_nosympathy = 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.RadioSelect, ) seller_fairrating = 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, ) seller_badconscience = 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.RadioSelect, ) #customer + seller question seller_customer_task_general = models.IntegerField( label="Die eigene Bearbeitung der Aufgaben hatte einen Einfluss auf meine Bewertungen.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], ], widget=widgets.RadioSelect, ) #Personality Questions #willingness to punish and forgive #One one page willingness_punish_fair = models.IntegerField( label="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.RadioSelect, ) willingness_punish_unfair = models.IntegerField( label="Wie sehr wären Sie bereit, jemanden zu bestrafen, der andere 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.RadioSelect, ) willingness_goodcause = models.IntegerField( label="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.RadioSelect, ) willingness_risk = models.IntegerField( label="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.RadioSelect, ) willingness_reciprocity = models.IntegerField( label="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.RadioSelect, ) willingness_revenge = models.IntegerField( label="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.RadioSelect, ) willingness_trust = models.IntegerField( label="Ich vermute, dass Leute nur die besten Absichten haben.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelect, ) #math skills skill_maths = models.IntegerField( label="Ich bin gut in Mathe.", choices=[ [1, "1"], [2, "2"], [3, "3"], [4, "4"], [5, "5"], [6, "6"], [7, "7"], [8, "8"], [9, "9"], [10, "10"], ], widget=widgets.RadioSelect, ) #generosity questions generosity_donation = models.IntegerField(label="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) generosity_grateful = models.IntegerField(widget=widgets.RadioSelectHorizontal, label="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]) #Empathy questions #On one Page empathy_betterthanme = 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, ) empathy_otherperspective = 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, ) empathy_problemsother = 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, ) empathy_allopinions = 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, ) empathy_exploiting = 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, ) empathy_friends = 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, ) empathy_untouched = 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, ) empathy_correct = 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, ) empathy_unfair = 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, ) empathy_observed = 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, ) empathy_twosides = 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, ) empathy_welltempered = 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, ) empathy_angry = 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, ) empathy_critics = 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, ) #Questions about risk taking #One page risk_car = 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, ) risk_finance = 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, ) risk_sports = 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, ) risk_profession = 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, ) risk_health = 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, ) risk_trust = 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, ) risk_impulsive = 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, ) risk_future = 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, ) risk_inflation = 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, ) #trust #Cognitive Reflection Test #On one page crt_bat = models.FloatField(label="1. Ein Schläger und ein Ball kosten zusammen 1.10 Euro. Der Schläger kostet 1.00 Euro mehr als der Ball. Wie viel kostet der Ball? (Eingabe in Eurocents)", min=0.0) crt_machines = models.IntegerField(label="2. 5 Maschinen benötigen 5 Minuten um 5 Teile herzustellen. Wie lange brauchen 100 Maschinen um 100 Teile herzustellen? (Eingabe in Minuten)",min=0) crt_searoses= models.IntegerField(label="3. In einem Teich wachsen Seerosen. Diese verdoppeln jeden Tag ihre Größe. Wenn es 48 Tage dauert bis die Seerosen den gesamten Teich bedecken, wie lange dauert es dann bis die Seerosen die Hälfte des Teichs bedecken? (Eingabe in Tage)",min=0) ### Session Creation def creating_session(subsession: Subsession): if 'treatment' in subsession.session.config: subsession.TREATMENT = subsession.session.config['treatment'] subsession.STANDALONE = False for player in subsession.get_players(): player.type = player.participant.vars.get('sp_playertype') if player.type == "seller": player.customer = False if subsession.TREATMENT == 'social_interaction': subsession.SOCIAL_INTERACTION = True # PAGES class MyPage(Page): pass class Welcome(Page): @staticmethod def vars_for_template(player: Player): if 'treatment' in player.subsession.session.config: player.subsession.TREATMENT = player.subsession.session.config['treatment'] player.subsession.STANDALONE = False for player in player.subsession.get_players(): player.type = player.participant.vars.get('sp_playertype') if player.type == "seller": player.customer = False if player.subsession.TREATMENT == 'social_interaction': player.subsession.SOCIAL_INTERACTION = True class Experiment_Questions1(Page): form_model = 'player' form_fields = [ 'ExpTeilnahme', 'InstructionsYes', 'InstructionsNo', 'InstructionsNoText', 'TaskYes', 'TaskNo', 'TaskNoText', 'analogy_training', 'numsequence_training', 'rating_experience' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class Experiment_Questions2(Page): form_model = 'player' form_fields = [ 'seventask_easy', 'seventask_boring', 'seventask_effort', 'analogy_easy', 'analogy_boring', 'analogy_effort', 'numsequence_easy', 'numsequence_boring', 'numsequence_effort', ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class Experiment_Questions3(Page): form_model = 'player' form_fields = [ 'EvaluationYes', 'EvaluationNo', 'EvaluationNoText' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class CustomerPage_SocialInteraction(Page): form_model = 'player' form_fields = [ 'customer_groupavg', 'customer_comparison', 'seller_customer_task_general', 'customer_owntask', 'customer_previousrating', 'customer_sympathy', 'customer_nosympathy', 'customer_fairrating', 'customer_badrating', 'customer_badconscience', 'customer_moreexpectation', 'customer_ratingimportant' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 @staticmethod def is_displayed(player:Player): return player.customer and player.subsession.SOCIAL_INTERACTION class CustomerPage_Control(Page): form_model = 'player' form_fields = [ 'customer_groupavg', 'customer_comparison', 'seller_customer_task_general', 'customer_owntask', 'customer_previousrating', 'customer_fairrating', 'customer_badrating', 'customer_badconscience', 'customer_moreexpectation', 'customer_ratingimportant' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 @staticmethod def is_displayed(player: Player): return player.customer and not player.subsession.SOCIAL_INTERACTION class SellerPage_SocialInteraction(Page): form_model = 'player' form_fields = [ 'seller_sympathy', 'seller_nosympathy', 'seller_customer_task_general', 'customer_fairrating', 'customer_badconscience' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 @staticmethod def is_displayed(player: Player): return not player.customer and player.subsession.SOCIAL_INTERACTION class SellerPage_Control(Page): form_model = 'player' form_fields = [ 'seller_customer_task_general', 'customer_fairrating', 'customer_badconscience' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 @staticmethod def is_displayed(player: Player): return not player.customer and not player.subsession.SOCIAL_INTERACTION class Personality_WillingnessGenerosity(Page): form_model = 'player' form_fields = [ 'willingness_punish_fair', 'willingness_punish_unfair', 'willingness_goodcause', 'willingness_reciprocity', 'willingness_revenge', 'willingness_trust', 'skill_maths', 'generosity_donation', 'generosity_grateful' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class Personality_Empathy(Page): form_model = 'player' form_fields = [ 'empathy_betterthanme', 'empathy_otherperspective', 'empathy_problemsother', 'empathy_allopinions', 'empathy_exploiting', 'empathy_friends', 'empathy_untouched', 'empathy_correct', 'empathy_unfair', 'empathy_observed', 'empathy_twosides', 'empathy_welltempered', 'empathy_angry', 'empathy_critics' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class Personality_Risk(Page): form_model = 'player' form_fields = [ 'risk_impulsive', 'risk_future', 'risk_inflation' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class Personality_CRT(Page): form_model = 'player' form_fields = [ 'crt_bat', 'crt_machines', 'crt_searoses' ] @staticmethod def before_next_page(player, timeout_happened): player.current_page = player.current_page + 1 class EndPage(Page): pass class ResultsWaitPage(WaitPage): pass class Results(Page): pass page_sequence = [Welcome, Experiment_Questions1, Experiment_Questions2, #Experiment_Questions3, CustomerPage_Control, CustomerPage_SocialInteraction, SellerPage_Control, SellerPage_SocialInteraction, Personality_WillingnessGenerosity, Personality_Empathy, #Personality_Risk, #Personality_CRT, EndPage ]