from otree.api import * DEBUG = False # todo: Set to False for real experiment & controlstages working / True doc = """ HRD """ ############# STARTING OTREE HERE ''' Here is the experiment controls ''' class C(BaseConstants): NAME_IN_URL = 'hrd' PLAYERS_PER_GROUP = None TREATMENT = 1 # 1: human, 2: machine, 3: human black blox, 4: machine black box; Also: Adjust Comprehension Check 2 in page_sequence EARNINGS = 10 # Taler Earnings INTERVALL_ROUNDS = 0 # Choosing and showing intervals LEARNING_SCENARIOS = 4 # Show different types of point recognition SCENARIOS = 10 # ask for real answers from the participants SITUATIONS_ROUNDS = 0 # 1 page, no additional anything, just for programm to run as intended EXPERIMENT_ROUNDS = 1 NUM_ROUNDS = EXPERIMENT_ROUNDS TREATMENT_HUMAN = "hrd/human.html" TREATMENT_MACHINE = "hrd/machine.html" TREATMENT_NONBLACKBOX = "hrd/nonblackbox.html" COMP_BLACKBOX = "hrd/ComprehensionCheck2_BB.html" class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): introduction_control1 = models.IntegerField( label="Wer erhält einen Zusatzgewinn?", choices=[ [1, "Alle Teilnehmende erhalten einen Zusatzgewinn."], [2, "Die Hälfte der Teilnehmenden erhält einen Zusatzgewinn."], [3, "Ein Teilnehmer/eine Teilnehmerin erhält einen Zusatzgewinn."] ], widget=widgets.RadioSelect, ) introduction_control2 = models.IntegerField( label="Welche Aussage zum Auszahlungsprozess ist korrekt?", choices=[ [1, "Die Auszahlung des Zusatzgewinns findet unter Ausschluss der Öffentlichkeit statt."], [2, "Die Auszahlung hängt ausschließlich von der berichteten Zahl ab."], [3, "Die Höhe des Zusatzgewinns ist fix."] ], widget=widgets.RadioSelect, ) introduction_control3 = models.IntegerField( label="Welchen Gewinnbetrag erhalten Sie mindestens, wenn Sie für das Erhalten des Zusatzgewinns ausgelost werden?", choices=[ [1, "7,50€ (d.h. die fixe Auszahlung)"], [2, "15,00€ (d.h. die fixe Auszahlung + 7,50€)"], [3, "22,50€ (d.h. die fixe Auszahlung + 15€)"] ], widget=widgets.RadioSelect, ) introduction_control4 = models.IntegerField( label="Was passiert, falls Sie geprüft werden?", choices=[ [1, "Sie erhalten eine neue Karte."], [2, "Sie erhalten lediglich die Show-up Fee."], [3, "Ihre berichtete Zahl wird mit der Zahl auf Ihrer Karte abgeglichen."] ], widget=widgets.RadioSelect, ) introduction_control5 = models.IntegerField( label="Welche Aussage zu Lotterie 1 ist korrekt?", choices=[ [1, "Alle Teilnehmenden spielen Lotterie 1."], [2, "Die ziehbaren Zahlen von 1 bis 10 sind unterschiedlich wahrscheinlich."], [3, "Da eine Prüfung stattfindet, wenn die in Lotterie 1 gezogene Zahl kleiner/gleich der von Ihnen berichteten Zahl ist, gilt: Je höher die von Ihnen berichtete Zahl, desto höher die Wahrscheinlichkeit geprüft zu werden."], ], widget=widgets.RadioSelect, ) introduction_control6 = models.IntegerField( label="Welche der folgenden Aussagen zur Prüfung ist korrekt?", choices=[ [1, "Ob eine Prüfung stattfindet, entscheiden Sie selbst."], [2, "Stimmt bei einer Prüfung Ihre berichtete Zahl nicht mit der Zahl auf Ihrer Karte überein, folgt Lotterie 2. Sie haben weiterhin eine Chance auf die volle Auszahlung (Berichtete Zahl x 15€)."], [3, "Stimmt bei einer Prüfung Ihre berichtete Zahl nicht mit der Zahl auf Ihrer Karte überein, erhalten Sie eine Auszahlung (Ihre gezogene Zahl x 7,50€)."], ], widget=widgets.RadioSelect, ) introduction_control7 = models.IntegerField( label="Welche Aussage zu Lotterie 2 ist korrekt?", choices=[ [1, "Ist die in Lotterie 2 gezogene Zahl (zwischen 1 und Ihrer berichteten Zahl) größer als die Zahl auf Ihrer Karte, wird Ihre Auszahlung reduziert (Gezogene Zahl x 7,50€)."], [2, "Jede/r Gewinner/in spielt Lotterie 2."], [3, "Ist die in Lotterie 2 gezogene Zahl (zwischen 1 und Ihrer berichteten Zahl) kleiner oder gleich der Zahl auf Ihrer Karte, wird Ihre Auszahlung reduziert (Gezogene Zahl x 7,50€)."] ], widget=widgets.RadioSelect, ) introduction_control8 = models.IntegerField( label="Welche Aussage zu Entscheidung 1 & 2 ist korrekt?", choices=[ [1, "Für alle Teilnehmenden wird Entscheidung 1 getroffen."], [2, "Für jede/n Gewinner/in wird Entscheidung 2 getroffen."], [3, "Bei Entscheidung 1 wird darüber entschieden, ob eine Prüfung stattfindet."], ], widget=widgets.RadioSelect, ) introduction_control9 = models.IntegerField( label="Welche der folgenden Aussagen zur Prüfung ist korrekt?", choices=[ [1, "Auch wenn die Zahl auf ihrer Karte nicht mit der von Ihnen berichteten Zahl übereinstimmt, können Sie immer noch die volle Auszahlung (Berichtete Zahl x 15€) erhalten."], [2, "Auch wenn Ihre berichtete Zahl mit der Zahl auf Ihrer Karte überein stimmt, folgt Entscheidung 2."], [3, "Stimmt Ihre berichtete Zahl mit der Zahl auf Ihrer Karte überein, erhalten Sie eine Auszahlung in Höhe Ihrer gezogenen Zahl x 7,50€."], ], widget=widgets.RadioSelect, ) report = models.IntegerField( label="", min=1, max=6, ) 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"] ], widget=widgets.RadioSelect, #initial=1 ## TODO: herausnehmen wenn keine vorauswahl gewünscht ist, nur damit schneller geklickt werden kann ) major = models.StringField( label="Bitte geben Sie Ihren aktuellen Studiengang an.", ) preference = models.IntegerField( label="", choices=[ [1, "einem Menschen"], [2, "einer Maschine (z.B. Computerprogramm, Algorithmus, KI, ...)"], ], widget=widgets.RadioSelect, ) errorexp = models.IntegerField( label="", choices=[ [1, "einem Menschen"], [2, "einer Maschine (z.B. Computerprogramm, Algorithmus, KI, ...)"], ], widget=widgets.RadioSelect, ) discretion = models.IntegerField( label="", choices=[ [1, "einem Menschen"], [2, "einer Maschine (z.B. Computerprogramm, Algorithmus, KI, ...)"], ], widget=widgets.RadioSelect, ) ati_1 = models.IntegerField( label="Ich beschäftige mich gern genauer mit technischen Systemen.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_2 = models.IntegerField( label="Ich probiere gern die Funktionen neuer technischer Systeme aus.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_3 = models.IntegerField( label="In erster Linie beschäftige ich mich mit technischen Systemen, weil ich muss.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_4 = models.IntegerField( label="Wenn ich ein neues technisches System vor mir habe, probiere ich es intensiv aus.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_5 = models.IntegerField( label="Ich verbringe sehr gern Zeit mit dem Kennenlernen eines neuen technischen Systems.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_6 = models.IntegerField( label="Es genügt mir, dass ein technisches System funktioniert, mir ist es egal, wie oder warum.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_7 = models.IntegerField( label="Ich versuche zu verstehen, wie ein technisches System genau funktioniert.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_8 = models.IntegerField( label="Es genügt mir, die Grundfunktionen eines technischen Systems zu kennen.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) ati_9 = models.IntegerField( label="Ich versuche, die Möglichkeiten eines technischen Systems vollständig auszunutzen.", choices=[ [1, "stimmt gar nicht"], [2, "stimmt weitgehend nicht"], [3, "stimmt eher nicht"], [4, "stimmt eher"], [5, "stimmt weitgehend"], [6, "stimmt völlig"], ], widget=widgets.RadioSelect, ) risk = models.IntegerField( label="Wie bereits sind Sie, im Allgemeinen, Risiken einzugehen?", choices=[ [0, "Überhaupt nicht bereit Risiken einzugehehn"], [1, ""], [2, ""], [3, ""], [4, ""], [5, ""], [6, ""], [7, ""], [8, ""], [9, ""], [10, "Sehr bereit Risiken einzugehen"], ], widget=widgets.RadioSelectHorizontal, ) test1 = models.IntegerField( label="Was ist ein Algorithmus?", choices=[ [1, "Ein Verfahren zur Datenübertragung"], [2, "Eine künstliche Intelligenz, die eigenständig Entscheidungen trifft"], [3, "Eine systematische Anleitung zur Durchführung von Berechnungen"], [4, "Eine Reihe von Anweisungen zum Schreiben von Software"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test2 = models.IntegerField( label="Was versteht man unter ''Big Data''?", choices=[ [1, "Eine Datenbank mit mehr als 10.000 Zeilen"], [2, "Eine große Menge an strukturierten und unstrukturierten Daten zur Analyse von Mustern und Trends"], [3, "Ein Datenformat für Daten, die viel Speicherplatz benötigen"], [4, "Eine Methode, um Daten in Echtzeit zu übertragen"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test3 = models.IntegerField( label="Was ist der ''Turing-Test'' in Bezug auf KI?", choices=[ [1, "Ein Test zur Evaluation der Hardware-Leistung von KI-System"], [2, "Ein Test zur Messung der Geschwindigkeit der Datenverarbeitung von KI-Modellen"], [3, "Ein Test zur Überprüfung der Sicherheit von KI-Algorithmen"], [4, "Ein Test zur Identifikation von menschenähnlichem Verhalten bei KI-Modellen"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test4 = models.IntegerField( label="Was bedeutet ''Overfitting'' im Kontext von KI-Modellen?", choices=[ [1, "Eine KI, die zu viele Daten verarbeitet und dadurch abstürzt"], [2, "Ein KI-Modell, das zu komplex und dadurch nicht generalisierbar ist"], [3, "Eine KI, die zu wenige Daten verwendet und dadurch schlechte Vorhersagen trifft"], [4, "Eine KI, die ihre Modelle wiederholt anpasst, und dadurch nicht effizient genug arbeitet"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test5 = models.IntegerField( label="Was ist das Ziel von Natural Language Processing (NLP)?", choices=[ [1, "Die Verarbeitung von menschlicher Sprache durch Maschinen"], [2, "Die Entwicklung von natürlichen Sprachen für maschinelles Lernen"], [3, "Die Verbesserung der Kommunikation zwischen Menschen und KI-Systemen"], [4, "Die Entwicklung von maschinenlesbaren Sprachen für effizientes Datenmanagement"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test6 = models.IntegerField( label="Was ist ein neuronales Netzwerk?", choices=[ [1, "Eine komplexes mathematisches Problem ohne eindeutige Lösung"], [2, "Ein KI-Modell, das auf biologischen Gehirnen basiert"], [3, "Eine KI, die sich auf das Speichern von Lerninhalten spezialisiert hat"], [4, "Ein Netzwerk von mehreren KI, die gemeinsam Probleme lösen"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test7 = models.IntegerField( label="Was ist das Ziel von Reinforcement Learning?", choices=[ [1, "Verbesserung der Vorhersagegenauigkeit von KI-Modellen"], [2, "Verbesserung der Skalierbarkeit von KI-Modellen"], [3, "Verbesserung der Genauigkeit von Klassifikationsalgorithmen"], [4, "Verbesserung von Entscheidungsfindung durch Interaktion mit der Umgebung und Erhalten von Belohnungen oder Bestrafungen"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test8 = models.IntegerField( label="Was versteht man unter ''Deep Learning''?", choices=[ [1, "Den Ansatz, Algorithmen alle möglichen Lösungen systematisch ausprobieren zu lassen, um die beste zu finden"], [2, "Ein Verfahren, bei dem KI-Modelle von einer Umgebung in eine andere übertragen werden"], [3, "Eine Methode zur Erläuterung von Entscheidungen von KI-Modellen gegenüber Menschen"], [4, "Die Verwendung von vielen Schichten in neuronalen Netzwerken zur Verarbeitung von Daten "], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test9 = models.IntegerField( label="Was ist ein Randomisierter Algorithmus?", choices=[ [1, "Ein Algorithmus zur zufälligen Auswahl von Elementen in einer Liste"], [2, "Ein Algorithmus zur automatischen Generierung von Testdaten"], [3, "Ein Algorithmus, der Zufall oder Wahrscheinlichkeiten verwendet, um Entscheidungen zu treffen"], [4, "Ein Algorithmus, der automatisiert aus einer Menge von Algorithmen ausgewählt wird, die potenziell in der Lage sind ein Problem zu lösen"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) test10 = models.IntegerField( label="Was ist ein ''Greedy-Algorithmus''?", choices=[ [1, "Ein Algorithmus, der in jedem Schritt die optimale Lösung auswählt"], [2, "Ein Algorithmus, der keine Entscheidungen trifft"], [3, "Ein Algorithmus, der sehr schnelle Entscheidungen trifft"], [4, "Ein Algorithmus, der nur die ersten Elemente einer Liste betrachtet"], [5, "Ich weiß es nicht"], ], widget=widgets.RadioSelect, ) dospert1 = models.IntegerField( label="In der Einkommensteuererklärung höhere Ausgaben angeben als man tatsächlich hatte.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) dospert2 = models.IntegerField( label="Eine Affäre mit einer verheirateten Frau/einem verheirateten Mann haben.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) dospert3 = models.IntegerField( label="Die Arbeit einer anderen Person als die eigene ausgeben.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) dospert4 = models.IntegerField( label="Ein Geheimnis eines Freundes an jemand anderen weitergeben.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) dospert5 = models.IntegerField( label="Kleine Kinder allein zu Hause lassen, während man eine Besorgung macht.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) dospert6 = models.IntegerField( label="Eine gefundene Brieftasche mit 200€ nicht zurückgeben.", choices=[ [1, "Definitiv unproblematisch"], [2, "Eher unproblematisch"], [3, "Unsicher"], [4, "Eher problematisch"], [5, "Definitiv problematisch"], ], widget=widgets.RadioSelectHorizontal, ) cheating1 = models.IntegerField( label="Bei Ihrer Steuererklärung", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating2 = models.IntegerField( label="Bei einer Klausur oder Prüfung (z.B. spicken, abschreiben)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating3 = models.IntegerField( label="In einem Spiel", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating4 = models.IntegerField( label="Bei einer Aussage bei der Polizei oder vor Gericht", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating5 = models.IntegerField( label="Bei einer Bewerbung (z.B. falsche Angaben in Ihrem Lebenslauf)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating6 = models.IntegerField( label="Beim Verkauf eines Artikel über eine Online-Plattform (z.B ebay)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating7 = models.IntegerField( label="In Ihrer Beziehung (z.B. Untreue)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating8 = models.IntegerField( label="Bei der Beantragung von Leistungen (z.B. Corona-Einmalzahlung, Sozialleistungen) ", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating9 = models.IntegerField( label="Bei Ihrer Abschlussarbeit (z.B. Plagiat)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating10 = models.IntegerField( label="In Ihren Angaben bei einer Versicherung", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) cheating11 = models.IntegerField( label="In einem sportlichen Wettkampf (z.B Doping, Missachtung der Regeln)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty1 = models.IntegerField( label="Bei Ihrer Steuererklärung", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty2 = models.IntegerField( label="Bei einer Klausur oder Prüfung (z.B. spicken, abschreiben)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty3 = models.IntegerField( label="In einem Spiel", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty4 = models.IntegerField( label="Bei einer Aussage bei der Polizei oder vor Gericht", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty5 = models.IntegerField( label="Bei einer Bewerbung (z.B. falsche Angaben in Ihrem Lebenslauf)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty6 = models.IntegerField( label="Beim Verkauf eines Artikel über eine Online-Plattform (z.B ebay)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty7 = models.IntegerField( label="In Ihrer Beziehung (z.B. Untreue)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty8 = models.IntegerField( label="Bei der Beantragung von Leistungen (z.B. Corona-Einmalzahlung, Sozialleistungen) ", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty9 = models.IntegerField( label="Bei Ihrer Abschlussarbeit (z.B. Plagiat)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty10 = models.IntegerField( label="In Ihren Angaben bei einer Versicherung", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) guilty11 = models.IntegerField( label="In einem sportlichen Wettkampf (z.B Doping, Missachtung der Regeln)", choices=[ [1, "Mensch"], [2, "Maschine"], ], widget=widgets.RadioSelectHorizontal, ) ios = models.IntegerField( label="", min=1, max=7, ) comment = models.LongStringField( blank=True, label="Möchten Sie uns noch etwas mitteilen? (optional)", ) # PAGES class ResultsWaitPage(WaitPage): pass class Welcome(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 ## just in the first class Instructions(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class ComprehensionCheck1(Page): form_model = 'player' form_fields = ['introduction_control1', 'introduction_control2', 'introduction_control3', 'introduction_control4'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def error_message(player, values): if not DEBUG: if values['introduction_control1'] != 3 or values['introduction_control2'] != 1 or values[ 'introduction_control3'] != 2 or values['introduction_control4'] != 3: return 'Sie haben falsch geantwortet, bitte überprüfen Sie noch einmal Ihre Antworten.' class ComprehensionCheck2(Page): form_model = 'player' form_fields = ['introduction_control5', 'introduction_control6', 'introduction_control7'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def error_message(player, values): if not DEBUG: if values['introduction_control5'] != 3 or values['introduction_control6'] != 2 or values[ 'introduction_control7'] != 1: return 'Sie haben falsch geantwortet, bitte überprüfen Sie noch einmal Ihre Antworten.' class ComprehensionCheck2_BB(Page): form_model = 'player' form_fields = ['introduction_control8', 'introduction_control9'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def error_message(player, values): if not DEBUG: if values['introduction_control8'] != 3 or values['introduction_control9'] != 1: return 'Sie haben falsch geantwortet, bitte überprüfen Sie noch einmal Ihre Antworten.' class CardDraw(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 # and player.round_number < C.INTERVALL_ROUNDS + C.SITUATIONS_ROUNDS class InputNumber(Page): form_model = 'player' form_fields = ['report'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def before_next_page(player, timeout_happened): player.payoff = player.report class Questionnaire(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Preference(Page): form_model = 'player' form_fields = ['preference', 'errorexp', 'discretion'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class ClosenessAlgo(Page): form_model = 'player' form_fields = ['ios'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class ClosenessHuman(Page): form_model = 'player' form_fields = ['ios'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireATI(Page): form_model = 'player' form_fields = ['ati_1', 'ati_2', 'ati_3', 'ati_4', 'ati_5', 'ati_6', 'ati_7', 'ati_8', 'ati_9'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireTest(Page): timeout_seconds = 250 timer_text = 'Verbleibende Zeit für die Bearbeitung des Tests:' form_model = 'player' form_fields = ['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'test9', 'test10'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireDospert(Page): form_model = 'player' form_fields = ['dospert1', 'dospert2', 'dospert3', 'dospert4', 'dospert5', 'dospert6'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireCheating(Page): form_model = 'player' form_fields = ['cheating1' , 'cheating2', 'cheating3', 'cheating4', 'cheating5', 'cheating6', 'cheating7', 'cheating8', 'cheating9', 'cheating10', 'cheating11'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireCheating2(Page): form_model = 'player' form_fields = ['guilty1', 'guilty2', 'guilty3', 'guilty4', 'guilty5', 'guilty6', 'guilty7', 'guilty8', 'guilty9', 'guilty10', 'guilty11'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireDemographics(Page): form_model = 'player' form_fields = ['age', 'gender', 'major', 'risk', 'comment'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class FinalPage(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class TestDebriefing(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 # page_sequence = [ChooseIntervall, ShowIntervall, LearningIntroduction,Learning, Results] page_sequence = [Welcome, Instructions, ComprehensionCheck1, ComprehensionCheck2, #ComprehensionCheck2_BB, CardDraw, InputNumber, Questionnaire, Preference, ClosenessHuman, #ClosenessAlgo, QuestionnaireATI, QuestionnaireDospert, QuestionnaireCheating, QuestionnaireCheating2, QuestionnaireTest, QuestionnaireDemographics, FinalPage, TestDebriefing, ] #####HELPER #T1: ComprehensionCheck2 + ClosenessHuman #T2: ComprehensionCheck2 + ClosenessAlgo #T3: ComprehensionCheck2_BB + ClosenessHuman #T4: ComprehensionCheck2_BB + ClosenessAlgo '''' #Text mit Notizen platzierbar '''