from otree.api import * DEBUG = True # 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 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" 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, #initial=1 ## TODO: herausnehmen wenn keine vorauswahl gewünscht ist, nur damit schneller geklickt werden kann ) 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 lediglich von der berichteten Zahl ab."], [3, "Die Höhe des Zusatzgewinns ist fix."] ], widget=widgets.RadioSelect, ) introduction_control3 = models.IntegerField( label="Welchen Gewinnbetrage erhalten Sie mindestens, wenn Sie für das Erhalten des Zusatzgewinns ausgelost werden?", choices=[ [1, "5€ (Show-Up Fee)"], [2, "12,50€ (Show-Up Fee + 7,50€)"], [3, "20€ (Show-Up Fee + 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 Auszahlung hängt und von der Zahl auf Ihrer Karte und ggf. Lotterie 2 ab."] ], widget=widgets.RadioSelect, ) introduction_control5 = models.IntegerField( label="Welche Aussage zu Lotterie 1 ist falsch?", choices=[ [1, "Jeder Gewinner/jede Gewinnerin spielt Lotterie 1."], [2, "Es können Zahlen von 1 bis 10 gezogen werden, von denen jede gleich wahrscheinlich ist."], [3, "Je höher die berichtete Zahl, desto höher die Wahrscheinlichkeit geprüft zu werden."], [4, "Das Ergebnis von Lotterie 1 hängt von der Zahl auf Ihrer Karte ab."] ], widget=widgets.RadioSelect, ) introduction_control6 = models.IntegerField( label="Welche der folgenden Aussagen zur Prüfung ist falsch?", choices=[ [1, "Ob eine Prüfung stattfindet, hängt vom Ergebnis von Lotterie 1 ab."], [2, "Stimmt Ihre berichtete Zahl nicht mit der Zahl auf Ihrer Karte überein, folgt Lotterie 2.."], [3, "Stimmt Ihre berichtete Zahl nicht mit der Zahl auf Ihrer Karte überein, erhalten Sie eine Auszahlung in Höhe Ihrer gezogenen Zahl x 7,50€."], [4, "Stimmt Ihre berichtete Zahl mit der Zahl auf Ihrer Karte überein, erhalten Sie eine Auszahlung in Höhe Ihrer berichteten Zahl x 15€."] ], widget=widgets.RadioSelect, ) introduction_control7 = models.IntegerField( label="Welche Aussage zu Lotterie 2 ist falsch?", choices=[ [1, "Auch wenn die Zahl auf ihrer Karte nicht mit der berichteten Zahl übereinstimmt, können Sie immer noch die volle Auszahlung (Berichtete Zahl x 15€) erhalten."], [2, "Ist die in Lotterie 2 gezogene Zahl (zwischen 1 und Ihrer berichteten Zahl) größer als die Zahl auf Ihrer Karte, wird Ihre Auszahlung angepasst (Gezogene Zahl x 7,50€)."], [3, "Nicht jeder Gewinner/jede Gewinnerin spielt Lotterie 2."], [4, "Ist die in Lotterie 2 gezogene Zahl (zwischen 1 und Ihrer berichteten Zahl) kleiner oder gleich der Zahl auf Ihrer Karte, wird Ihre Auszahlung angepasst (Gezogene 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 ) educ = models.IntegerField( label="Bitte geben Sie Ihren höchsten (bereits erlangten) Bildungsabschluss an.", choices=[ [1, "Haupt-/Volksschulabschluss"], [2, "Realschulabschluss"], [3, "Abitur/Fachabitur"], [4, "Bachelor"], [5, "Master"], [6, "Sonstiges"] ], widget=widgets.RadioSelect, ) 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, ) 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"], [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"], ], widget=widgets.RadioSelect, ) test2 = 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"], ], widget=widgets.RadioSelect, ) test3 = 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"], ], widget=widgets.RadioSelect, ) test4 = 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"], ], widget=widgets.RadioSelect, ) test5 = 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ält wird, die potenziell in der Lage sind ein Problem zu lösen"], ], 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"], ], widget=widgets.RadioSelect, ) test7 = models.IntegerField( label="Was ist der Unterschied zwischen Supervised Learning und Unsupervised Learning in Bezug auf AI?", choices=[ [1, "Supervised Learning bezieht sich auf das maschinelle Lernen mit gelabelten Daten, während Unsupervised Learning sich auf das maschinelle Lernen ohne gelabelte Daten bezieht"], [2, "Supervised Learning bezieht sich auf AI-Modelle, die durch Kommunikation lernen, während Unsupervised Learning sich auf AI-Modelle, die ohne Kommunikation lernen, bezieht"], [3, "Supervised Learning bezieht sich auf die Überwachung von AI-Modellen durch Menschen, während Unsupervised Learning sich auf die automatische Lernfähigkeit von AI-Modellen bezieht"], [4, "Supervised Learning bezieht sich auf das maschinelle Lernen von unstrukturierten Daten, während Unsupervised Learning sich auf das maschinelle Lernen von strukturierten Daten bezieht"], ], widget=widgets.RadioSelect, ) test8 = 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"], ], widget=widgets.RadioSelect, ) test9 = 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"], ], widget=widgets.RadioSelect, ) test10 = 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"], ], widget=widgets.RadioSelect, ) test11 = 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 "], ], widget=widgets.RadioSelect, ) test12 = models.IntegerField( label="Was ist der Zweck eines ''Hash-Algorithmus''?", choices=[ [1, "Ein Algorithmus zur Suche in sortierten Listen"], [2, "Ein Algorithmus zur Verschlüsselung von Daten"], [3, "Ein Algorithmus zur Umwandlung von Text in Sprache"], [4, "Ein Algorithmus zur Berechnung einer festen Länge von Daten"], ], widget=widgets.RadioSelect, ) test13 = models.IntegerField( label="Was ist der ''Dijkstra-Algorithmus''?", choices=[ [1, "Ein Algorithmus zur Berechnung des kürzesten Pfades zwischen zwei Knoten in einem Graphen"], [2, "Ein Algorithmus zur Sortierung von Elementen in einer Liste"], [3, "Ein Algorithmus zur Umwandlung von Text in Sprache"], [4, "Ein Algorithmus zur Erzeugung von Zufallszahlen"], ], widget=widgets.RadioSelect, ) test14 = models.IntegerField( label="Was ist ein Heuristischer Algorithmus?", choices=[ [1, "Ein Algorithmus zur Bilderkennung"], [2, "Ein Algorithmus zur Verwaltung von Benutzerschnittstellen"], [3, "Ein Algorithmus, der sich auf Erfahrungswissen und Annäherungslösungen stützt"], [4, "Ein Algorithmus, der nur auf spezieller Hardware ausgeführt werden kann"], ], widget=widgets.RadioSelect, ) test15 = models.IntegerField( label="Was ist ein ''Divide-and-Conquer-Algorithmus''?", choices=[ [1, "Ein Algorithmus, der Probleme in kleinere Teilprobleme aufteilt und sie separat löst"], [2, "Ein Algorithmus, der Probleme in kleinere Teilprobleme aufteilt, sie separat löst und dann die Ergebnisse kombiniert "], [3, "Ein Algorithmus, der Probleme in mehrere Teile teilt und alle Teile gleichzeitig löst"], [4, "Ein Algorithmus, der Elemente von Problemen in einer bestimmten Reihenfolge anordnet, um sie effizienter Lösen zu können"], ], widget=widgets.RadioSelect, ) dospert1 = models.IntegerField( label="In Ihrer Einkommensteuererklärung höhere Ausgaben angeben als Sie tatsächlich hatten.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], widget=widgets.RadioSelectHorizontal, ) dospert2 = models.IntegerField( label="Eine Affäre mit einer verheirateten Frau/einem verheirateten Mann haben.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], widget=widgets.RadioSelectHorizontal, ) dospert3 = models.IntegerField( label="Die Arbeit einer anderen Person als die eigene ausgeben.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], widget=widgets.RadioSelectHorizontal, ) dospert4 = models.IntegerField( label="Ein Geheimnis eines Freundes an jemand anderen weitergeben.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], widget=widgets.RadioSelectHorizontal, ) dospert5 = models.IntegerField( label="Ihre kleinen Kinder allein zu Hause lassen, während Sie eine Besorgung machen.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], widget=widgets.RadioSelectHorizontal, ) dospert6 = models.IntegerField( label="Eine gefundene Brieftasche mit 200€ nicht zurückgeben.", choices=[ [1, "Extrem unwahrscheinlich"], [2, "Ziemlich unwahrscheinlich"], [3, "Eher unwahrscheinlich"], [4, "Unklar"], [5, "Eher wahrscheinlich"], [6, "Ziemlich wahrscheinlich"], [7, "Extrem wahrscheinlich"], ], 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="Bei einem Gesellschaftsspiel", 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 einem Vorstellungsgespräch (z.B. 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="Bei 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="Bei einem Gesellschaftsspiel", 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 einem Vorstellungsgespräch (z.B. 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="Bei 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, ) 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'] != 4 or values['introduction_control6'] != 3 or values[ 'introduction_control7'] != 4: 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'] @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): form_model = 'player' form_fields = ['test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test7', 'test8', 'test9', 'test10', 'test1', 'test12', 'test13', 'test14', 'test15'] @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'] @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'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 class QuestionnaireDemographics(Page): form_model = 'player' form_fields = ['age', 'gender', 'educ', '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 # page_sequence = [ChooseIntervall, ShowIntervall, LearningIntroduction,Learning, Results] page_sequence = [Welcome, Instructions, ComprehensionCheck1, ComprehensionCheck2, CardDraw, InputNumber, Questionnaire, Preference, QuestionnaireATI, QuestionnaireTest, QuestionnaireDospert, QuestionnaireCheating, QuestionnaireCheating2, QuestionnaireDemographics, FinalPage, ] #####HELPER '''' #Text mit Notizen platzierbar '''