from otree.api import * doc = """ Your app description """ def make_field6(label): return models.IntegerField( choices=[[1, ''], [2, ''], [3, ''], [4, ''], [5, ''], [6, '']], label=label, widget=widgets.RadioSelectHorizontal, blank=False, #initial=1, #zum testen ) class C(BaseConstants): NAME_IN_URL = 'Apperzeptionstest' PLAYERS_PER_GROUP = None NUM_ROUNDS = 6 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): text = models.LongStringField( label='Schreiben Sie hier Ihre Geschichte auf:' ) ums1_1 = make_field6('Wenn ich jemanden kennenlerne, habe ich oft Angst, abgelehnt zu werden.') ums1_2 = make_field6('In einer Partnerschaft wünsche ich mir, vollständig im anderen aufzugehen.') ums1_3 = make_field6('Ich habe gerne das Sagen.') ums1_4 = make_field6('Zusammentreffen mit anderen Menschen machen mich glücklich.') ums1_5 = make_field6('Ich bekomme Angst, wenn sich Dinge meiner Kontrolle entziehen.') ums1_6 = make_field6('Ich versuche, so oft wie möglich in der Gesellschaft von Freunden zu sein.') ums1_7 = make_field6('In etwas schwierigen Situationen, in denen viel von mir selbst abhängt, habe ich Angst zu versagen.') ums2_1 = make_field6('Projekte, die mich bis an die Grenze meiner Leistungsfähigkeit bringen.') ums2_2 = make_field6('Viel mit anderen Menschen zusammen unternehmen.') ums2_3 = make_field6('Über eine Gruppe oder eine Organisation Kontrolle ausüben zu können.') ums2_4 = make_field6('Arbeit von hoher Qualität zu leisten.') ums2_5 = make_field6('Zuneigung und Liebe geben.') ums2_6 = make_field6('Einfluss ausüben können.') ums2_7 = make_field6('Meine Leistung stets auf einem hohen Niveau zu halten.') ums2_8 = make_field6('Eine tiefgehende Beziehung haben.') personen01 = make_field6('... Spaß zu haben.') personen02 = make_field6('... sich um die Natur zu kümmern.') personen03 = make_field6('... sich um Menschen zu kümmern, die ihm/ihr persönlich nahestehen.') personen04 = make_field6('... die Freuden des Lebens zu genießen.') personen05 = make_field6('... an Aktivitäten zum Schutz der Natur teilzunehmen.') personen06 = make_field6('... tolerant gegenüber vielen verschiedenen Menschen und gesellschaftlichen Gruppen zu sein.') personen07 = make_field6('... den Menschen zu helfen, die ihm/ihr am Herzen liegen.') personen08 = make_field6('... jede Gelegenheit zu nutzen, um Spaß zu haben.') personen09 = make_field6('... die Umwelt vor Zerstörung oder Verschmutzung zu schützen.') personen10 = make_field6('... Menschen zu akzeptieren, selbst wenn er/sie mit ihnen nicht einer Meinung ist.') personen11 = make_field6('... sich um jedes Bedürfnis der Menschen zu kümmern, die ihm/ihr am Herzen liegen.') personen12 = make_field6('... dass die Schwachen und Benachteiligten in der Gesellschaft geschützt werden.') personen13 = make_field6('... dass die Menschen, die er/sie kennt, volles Vertrauen in ihn/ihr haben.') personen14 = make_field6('... dass jeder Mensch auf der Welt die gleichen Chancen im Leben hat.') personen15 = make_field6('... ein zuverlässiger und vertrauenswürdiger Freund/Freundin zu sein.') personen16 = make_field6('... dass alle Menschen gerecht behandelt werden, selbst die, die er/sie nicht kennt.') personen17 = make_field6('... dass sich Freunde und Familie voll und ganz auf ihn/ihr verlassen können.') personen18 = make_field6('... den Menschen, die anders sind als er/sie, zuzuhören und sie zu verstehen.') alter = models.IntegerField( min=0, max=110, label="Wie alt sind Sie?", ) geschlecht = models.IntegerField( label=("Sind Sie weiblich, männlich oder divers?"), choices=[ [0, 'Weiblich'], [1, 'Männlich'], [2, 'Divers'], ], widget=widgets.RadioSelect, blank=False, # initial=0 ) land = models.IntegerField( label=("In welchem Land leben Sie zur Zeit?"), choices=[ [0, 'Deutschland'], [1, 'anderes Land'], ], widget=widgets.RadioSelect, blank=False, # initial=0 ) abschluss = models.IntegerField( label=("Welcher ist Ihr höchster Bildungsabschluss?"), choices=[ [1, 'Haupt- oder Volksschulabschluss'], [2, 'Realschulabschluss'], [3, 'Abitur'], [4, 'Bachelorabschluss'], [5, 'Masterabschluss'], [6, 'Diplom oder vergleichbares'], [7, 'Doktor-Grad'], [8, 'Sonstiges'], ], blank=False, # initial=1, ) beruf = models.IntegerField( label=("In welcher beruflichen Situation befinden Sie sich aktuell?"), choices=[ [1, 'Schüler'], [2, 'Student'], [3, 'in einer Ausbildung'], [4, 'berufstätig'], [5, 'arbeitssuchend'], [6, 'keines der genannten'] ], blank=False, # initial=1, ) familie = models.IntegerField( label=("Wie ist ihr aktueller Familienstand?"), choices=[ [1, 'verheiratet'], [2, 'verwitwet'], [3, 'geschieden'], [4, 'Partnerschaft'], [5, 'ledig'], ], blank=False, # initial=1, ) def vars_for_template(player: Player): return dict( round=player.round_number, ) # PAGES class Welcome(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 @staticmethod def live_method(player, data): player.participant.mobile = data #print('Hier: ', player.participant.mobile) class Instructions(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Test(Page): form_model = 'player' form_fields = ['text'] @staticmethod def vars_for_template(player: Player): context = vars_for_template(player) context.update( path_pic='global/pictures/pic{}.png'.format(player.round_number), mobile=player.participant.mobile ) return context class UMS(Page): form_model = 'player' form_fields = [ 'ums1_1', 'ums1_2', 'ums1_3', 'ums1_4', 'ums1_5', 'ums1_6', 'ums1_7', 'ums2_1', 'ums2_2', 'ums2_3', 'ums2_4', 'ums2_5', 'ums2_6', 'ums2_7', 'ums2_8', 'personen01', 'personen02', 'personen03', 'personen04', 'personen05', 'personen06', 'personen07', 'personen08', 'personen09', 'personen10', 'personen11', 'personen12', 'personen13', 'personen14', 'personen15', 'personen16', 'personen17', 'personen18', ] @staticmethod def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS @staticmethod def js_vars(player: Player): return dict( mobile=player.participant.mobile, ) class Questions(Page): form_model = 'player' form_fields = ['alter', 'geschlecht', 'land', 'abschluss', 'beruf', 'familie'] @staticmethod def is_displayed(player: Player): return player.round_number == 1 page_sequence = [Welcome, Questions, Instructions, Test, UMS]