from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) from conjoint.templates.conjoint.random_number import n_random_numbers, random_number author = 'Hanna' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'conjoint' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): random_numbers_vl = n_random_numbers(1, 3, 2) p.randomnumber_vl_1 = random_numbers_vl[0] p.randomnumber_vl_2 = random_numbers_vl[1] random_numbers_tut = n_random_numbers(1, 3, 2) p.randomnumber_tut_1 = random_numbers_tut[0] p.randomnumber_tut_2 = random_numbers_tut[1] random_numbers_ex = n_random_numbers(1, 3, 2) p.randomnumber_ex_1 = random_numbers_ex[0] p.randomnumber_ex_2 = random_numbers_ex[1] p.random_foreign_candidate = random_number(1, 6) p.random_beruf_cdu = random_number(0, 1) p.random_beruf_spd = random_number(0, 1) p.random_liste_cdu = random_number(0, 1) p.random_liste_spd = random_number(0, 1) p.random_liste_gruene = random_number(0, 1) p.random_liste_fdp = random_number(0, 1) p.random_liste_afd = random_number(0, 1) p.random_liste_linke = random_number(0, 1) p.random_lastname_cdu = random_number(0, 19) p.random_firstname_cdu = random_number(0, 19) p.random_lastname_spd = random_number(0, 19) p.random_firstname_spd = random_number(0, 19) p.random_lastname_gruene = random_number(0, 19) p.random_firstname_gruene = random_number(0, 19) p.random_lastname_fdp = random_number(0, 19) p.random_firstname_fdp = random_number(0, 19) p.random_lastname_afd = random_number(0, 19) p.random_firstname_afd = random_number(0, 19) p.random_lastname_linke = random_number(0, 19) p.random_firstname_linke = random_number(0, 19) p.random_lastname_foreign = random_number(0, 4) p.random_firstname_foreign = random_number(0, 4) p.random_age_mayor1 = random_number(1,2) p.random_age_mayor2 = random_number(1,2) p.random_age_mp1 = random_number(1,2) p.random_age_mp2 = random_number(1,2) p.random_dr_mayor1 = random_number(0,1) p.random_dr_mayor2 = random_number(0,1) p.random_dr_mp1 = random_number(0,1) p.random_dr_mp2 = random_number(0,1) p.random_beruf_mayor1 = random_number(1, 2) p.random_beruf_mayor2 = random_number(1, 2) p.random_beruf_mp1 = random_number(1, 2) p.random_beruf_mp2 = random_number(1, 2) p.randomnumberdue = random_number(100000,999999) class Group(BaseGroup): pass class Player(BasePlayer): ### Variable fuer Smartphone mobile_device = models.IntegerField() # 1 if smartphone, else 0 ### Klausur klausur_teilnahme = models.IntegerField(blank=True) klausur_punkte = models.FloatField(min=0, max=100, label='',blank=True) klausur_fair = models.IntegerField(blank=True) klausur_leicht = models.IntegerField(blank=True) klausur_uebungsblaetter = models.IntegerField(blank=True) klausur_themen = models.IntegerField(blank=True) #### Internet internet_anschluss = models.IntegerField(choices=[ [1, 'nur WLAN / only WiFi'], [2, 'nur mobile Daten / only mobile data'], [3, 'sowohl WLAN als auch mobile Daten / both WiFi and mobile data'], ], label='Welchen Zugang (privat) haben Sie zum Internet? / What is your (private) access to the Internet?', widget = widgets.RadioSelect,blank=True ) mobildatenvolumen = models.StringField(label='', blank=True) internet_schnell = models.IntegerField(choices=[ [1, 'sehr schnelles Internet / very fast Internet'], [2, 'schnelles Internet / fast Internet'], [3, 'normales Internet / normal Internet'], [4, 'langsames Internet / slow Internet'], [5, 'sehr langsames Internet / very slow Internet'], ], label='Wie schätzen Sie die Geschwindigkeit Ihrer Internetverbindung ein? / How fast do you think your Internet connection is?', widget=widgets.RadioSelect,blank=True ) # internet_stabil = models.IntegerField(choices=[ # [1, 'sehr stabile Internetverbindung / very stable Internet connection'], # [2, 'stabile Internetverbindung / stable Internet connection'], # [3, 'normale Internetverbindung / normal Internet connection'], # [4, 'instabile Internetverbindung / unstable Internet connection'], # [5, 'sehr instabile Internetverbindung / very unstable Internet connection'], # ], # label='Wie stabil schätzen Sie Ihre Internetverbindung ein? / How stable do you think your Internet connection is?', # widget=widgets.RadioSelect,blank=True # ) internet_probleme = models.IntegerField(choices=[ [1, 'nie / never'], [2, 'weniger als einmal pro Woche / less than once a week'], [3, 'einmal pro Woche / once a week'], [4, 'zwei bis fünf Mal pro Woche / two to five times a week'], [5, 'mehr als fünf Mal pro Woche / more than five times a week'], ], widget=widgets.RadioSelect, blank=True, label= 'Wie häufig hatten Sie Probleme bei Online-Kursen? / How often did you have problems with online courses?' ) ### Conjoint: Wahl zwischen zwei Paketen aus VL, Tut, Exam randomnumber_vl_1 = models.IntegerField() randomnumber_vl_2 = models.IntegerField() randomnumber_tut_1 = models.IntegerField() randomnumber_tut_2 = models.IntegerField() randomnumber_ex_1 = models.IntegerField() randomnumber_ex_2 = models.IntegerField() choice_package_corona = models.IntegerField(blank=True) choice_package_no_corona = models.IntegerField(blank=True) ### Skalometer Partei haltung_cdu = models.IntegerField(blank=True) haltung_csu = models.IntegerField(blank=True) haltung_spd = models.IntegerField(blank=True) haltung_gruene = models.IntegerField(blank=True) haltung_fdp = models.IntegerField(blank=True) haltung_afd = models.IntegerField(blank=True) haltung_linke = models.IntegerField(blank=True) ### Matrikelnummer matrikelnummer = models.IntegerField(label='', min=100000, max=9999999) #IntegerField für ganze Zahl #StringField für Buchstaben #FloatField für Kommazahlen ### Politik vote_candidate = models.StringField(blank=True) vote_party = models.StringField(blank=True) ### Wahl OB vote_mayor = models.IntegerField(blank=True) ### Wahl Bundestagsmitglied vote_mp = models.IntegerField(blank=True) # randomize which candidate of the 6 has foreign name random_foreign_candidate = models.IntegerField() # 1 -> CDU candidate name is foreign # 2 -> SPD candidate name is foreign # 3 -> Gruene ... # 4 -> FDP ... # 5 -> AfD ... # 6 -> LINKE ... # randomly generate foreign (turkish) sounding name random_lastname_foreign = models.IntegerField() random_firstname_foreign = models.IntegerField() # randomize whether SPD and/or CDU candidate (or neither) is incumbent random_beruf_cdu = models.IntegerField() random_beruf_spd = models.IntegerField() # randomize whether party lists have known or rather unknown names (at beginning) random_liste_cdu = models.IntegerField() random_liste_spd = models.IntegerField() random_liste_gruene = models.IntegerField() random_liste_fdp = models.IntegerField() random_liste_afd = models.IntegerField() random_liste_linke = models.IntegerField() # randomly generate typical German names random_lastname_cdu = models.IntegerField() # random_firstname_cdu = models.IntegerField() random_lastname_spd = models.IntegerField() # random_firstname_spd = models.IntegerField() random_lastname_gruene = models.IntegerField() # random_firstname_gruene = models.IntegerField() random_lastname_fdp = models.IntegerField() # random_firstname_fdp = models.IntegerField() random_lastname_afd = models.IntegerField() # random_firstname_afd = models.IntegerField() random_lastname_linke = models.IntegerField() # random_firstname_linke = models.IntegerField() candname_cdu = models.StringField() candname_spd = models.StringField() candname_gruene = models.StringField() candname_fdp = models.StringField() candname_afd = models.StringField() candname_linke = models.StringField() ## random characteristics of mayor / mp random_age_mayor1 = models.IntegerField() random_age_mayor2 = models.IntegerField() random_age_mp1 = models.IntegerField() random_age_mp2 = models.IntegerField() random_dr_mayor1 = models.IntegerField() random_dr_mayor2 = models.IntegerField() random_dr_mp1 = models.IntegerField() random_dr_mp2 = models.IntegerField() random_beruf_mayor1 = models.IntegerField() random_beruf_mayor2 = models.IntegerField() random_beruf_mp1 = models.IntegerField() random_beruf_mp2 = models.IntegerField() ### zufällig generierte 6stellige Zufallszahl randomnumberdue = models.IntegerField() # Eingabe von randomnumberdue rand_num = models.IntegerField(label='') ### Time stamp variablen time_start = models.StringField(initial="-999") time_klausur = models.StringField(initial="-999") time_internet = models.StringField(initial="-999") time_conjoint = models.StringField(initial="-999") time_wahlzettel_ankuendigung = models.StringField(initial="-999") time_politik = models.StringField(initial="-999") time_skalometer_partei = models.StringField(initial="-999") time_vote_mayor = models.StringField(initial="-999") time_vote_mp = models.StringField(initial="-999") time_randomNumber = models.StringField(initial="-999") time_matrikelnr = models.StringField(initial="-999") time_end = models.StringField(initial="-999") #label= "Haben Sie einen Internet-Anschluss zu Hause? <
> ''Do you have an Internet connection at home?''"