from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from django.utils.safestring import mark_safe doc = '' class Constants(BaseConstants): name_in_url = 'survey2020' players_per_group = None num_rounds = 1 group_contr_fixed = 'group_contr_fixed' group_contr_correct = 'group_contr_correct' fixed_reward = c(100) correct_question_reward = c(10) correct_answers = (1, 4, 1, 4, 2, 2, 2, 2, 3, 1) num_participants = 0 class Subsession(BaseSubsession): def shuffle_players(self): # We have two groups contr_fixed and contr_correct players = self.get_players() group_contr_fixed = [] group_contr_correct = [] i = 0 for p in players: # Each even player will go to first group if i % 2 == 0: group_contr_fixed.append(p) else: group_contr_correct.append(p) i = i + 1 # Both groups into matrix group_matrix = [] group_matrix.append(group_contr_fixed) group_matrix.append(group_contr_correct) print(group_matrix) self.set_group_matrix(group_matrix) def creating_session(self): self.shuffle_players() def my_method(self): pass class Group(BaseGroup): pass class Player(BasePlayer): # Uveďte prosím, jaký je Váš postoj k přijímání uprchlíků. Postoj vyjádřete číslem v intervalu od 1 do 7, kde 1 znamená ,,extrémně negativní postoj'', a 7 znamená ,,extrémně pozitivní postoj''. iq1 = models.IntegerField(choices=[[1, '1)\tnaprosto nesouhlasný postoj'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7)\tnaprosto souhlasný postoj']], label="", widget=widgets.RadioSelect) # Uveďte prosím, jaký je Váš postoj k následujícímu výroku o přijímání uprchlíků: ,,Je povinností bezpečných zemí přijímat uprchlíky z oblastí, kde probíhá válka.'' iq2 = models.IntegerField(choices=[[1, '1)\tnaprosto nesouhlasný postoj'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7)\tnaprosto souhlasný postoj']], label="", widget=widgets.RadioSelect) # Uveďte prosím, jaký je Váš postoj k následujícímu výroku o přijímání uprchlíků: ,,Je povinností bezpečných zemí přijímat uprchlíky z oblastí, kde probíhá válka.'' Postoj vyjádřete číslem v intervalu od 1 do 7, kde 1 znamená ,,naprosto nesouhlasný postoj'', a 7 znamená ,,naprosto souhlasný postoj''. iq3 = models.IntegerField(choices=[[1, '1)\tnaprosto nesouhlasný postoj'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7)\tnaprosto souhlasný postoj']], label="", widget=widgets.RadioSelect) # Uveďte prosím, jaký je Váš postoj k následujícímu výroku o přijímání uprchlíků: ,,Česká republika by se měla snažit přijímat více uprchlíků ze Sýrie a Iráku.'' Postoj vyjádřete číslem v intervalu od 1 do 7, kde 1 znamená ,,naprosto nesouhlasný postoj'', a 7 znamená ,,naprosto souhlasný postoj''. iq4 = models.IntegerField(choices=[[1, '1)\tnaprosto nesouhlasný postoj'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7)\tnaprosto souhlasný postoj']], label="", widget=widgets.RadioSelect) q1 = models.IntegerField(choices=[[1, '1)\tbude Německo do 40 let potřebovat více než čtvrt milionu přistěhovalců'], [2, '2)\tje německá ekonomika připravena integrovat 260 000 migrantů do roku 2060'], [3, '3)\tbudou přistěhovalci v roce 2060 tvořit polovinu německých průmyslových pracovníků'], [4, '4)\tmusí Německo do roku 2060 zaměstnat okolo 16 milionů přistěhovalců z oblastí mimo EU'], [5, '5)\tani jedna z odpovědí není správná']], label='A.\tPodle Bertelsmannovy studie:', widget=widgets.RadioSelect) q2 = models.IntegerField(choices=[[1, '1)\tpro německou ekonomiku jsou zásadní pracovníci z EU'], [2, '2)\tšance na úspěšnou integraci migrantů jsou nízké'], [3, '3)\tse Německo s uprchlickou krizí dokáže vypořádat'], [4, '4)\tpřijatí uprchlíci Německo z dlouhodobého hlediska obohatí'], [5, '5)\tani jedna z odpovědí není správná']], label='B.\tNěmci obecně spíše věří, že ', widget=widgets.RadioSelect) q3 = models.IntegerField(choices=[[1, '1)\tse domnívá, že integrace uprchlíků je úspěšnější, než se předpokládalo'], [2, '2)\tdoufá, že se v příštích letech podaří integrovat více uprchlíků, kteří přišli v roce 2015'], [3, '3)\tpovažuje postup Angely Merkelové za vcelku úspěšný'], [4, '4)\tpovažuje otevření hranic uprchlíkům za rozumný tah'], [5, '5)\tani jedna z odpovědí není správná']], label='C.\tPředseda asociace německých zaměstnavatelů: ', widget=widgets.RadioSelect) q4 = models.IntegerField(choices=[[1, '1)\tněmecký politický komentátor'], [2, '2)\tpředseda asociace německých zaměstnavatelů'], [3, '3)\tIngo Kramer'], [4, '4)\tfrancouzský expert na migraci'], [5, '5)\tani jedna z odpovědí není správná']], label='D.\tK otázce efektivnosti uzavření hranic se v textu vyjadřoval:', widget=widgets.RadioSelect) q5 = models.IntegerField(choices=[[1, '1)\tnedostatečnému snížení migrujících'], [2, '2)\tzvýšenému počtu úmrtí migrantů'], [3, '3)\tsnížení přicházejících migrantů za cenu ekonomického propadu'], [4, '4)\tpostupnému snižování dostupné pracovní síly'], [5, '5)\tani jedna z odpovědí není správná']], label='E.\tDle názoru tohoto člověka by uzavření hranic vedlo k:', widget=widgets.RadioSelect) q6 = models.IntegerField(choices=[[1, '1)\tstředostavovské podniky mají zájem především o mladé migranty'], [2, '2)\tzhruba 40% uprchlíků, kteří přišli v roce 2015 má práci nebo výuční místo'], [3, '3)\tvíce než milion mladých uprchlíků se od roku 2015 naučilo dobře německy'], [4, '4)\tzhruba 40% uprchlíků, kteří přišli v roce 2015 pracuje a odvádí sociální odvody'], [5, '5)\tani jedna z odpovědí není správná']], label='F.\tIngo Kramer dle článku uvádí, že:', widget=widgets.RadioSelect) q7 = models.IntegerField(choices=[[1, '1)\tpřírůstek přistěhovalců z EU do Německa se bude zřejmě zvětšovat'], [2, '2)\tČeská republika vykazuje podobné relevantní parametry pracovního trhu jako Německo'], [3, '3)\tuzavření hranic v nárazníkových státech EU by migraci zřejmě snížilo více než v Německu'], [4, '4)\tstředostavovské podniky souhlasí se současnou podobou zákona o přistěhovalectví'], [5, '5)\tani jedna z odpovědí není správná']], label='G.\tV článku se psalo, že:', widget=widgets.RadioSelect) q8 = models.IntegerField(choices=[[1, '1)\tstudie vedená francouzským expertem na migraci'], [2, '2)\tstudie Rady německých nadací pro integraci a migraci'], [3, '3)\tstudie německého centra veřejného mínění'], [4, '4)\tpředseda asociace německých zaměstnavatelů'], [5, '5)\tani jedna z odpovědí není správná']], label='H.\tO názorech Němců na dlouhodobé přínosy migrace v textu vypovídá', widget=widgets.RadioSelect) q9 = models.IntegerField(choices=[[1, '1)\tJe třeba imigraci lépe kontrolovat a vpouštět do Německa jen odborníky z řad přistěhovalců'], [2, '2)\tMá Německo dost svých problémů se zaměstnaností, aby přijímalo přistěhovalce'], [3, '3)\tStředostavovské podniky doufají v zákon o přistěhovalectví odborných pracovníků'], [4, '4)\tBy rozsáhlejší migrační krize nemusela pro Německo dopadnout tak dobře'], [5, '5)\tani jedna z odpovědí není správná']], label='I.\tZ vyjádření předsedy asociace německých zaměstnavatelů plyne:', widget=widgets.RadioSelect) q10 = models.IntegerField(choices=[[1, '1)\tv průměru nezměnil a zůstává spíše pozitivní'], [2, '2)\tv průměru stal více pesimistickým'], [3, '3)\tv průměru nezměnil a zůstává spíše negativní'], [4, '4)\tzhoršil především u těch Němců, kteří mají s uprchlíky osobní zkušenost'], [5, '5)\tani jedna z odpovědí není správná']], label='J.\tOproti roku 2015 se postoj Němců k uprchlíkům:', widget=widgets.RadioSelect) q11 = models.IntegerField(choices=[[1, '1)\textrémně vyhraněný proti přijímání uprchlíků'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7)\textrémně vyhraněný pro přijímání uprchlíků']], label='Nyní prosím uveďte, zda a jak Vám přišel text o migraci vyhraněný. Odpověď uveďte číslem na stupnici od 1 do 7, kde 1 znamená ,,Text byl extrémně vyhraněný proti přijímání uprchlíků'', a 7 znamená ,,Text byl extrémně vzhraněný pro přijímání uprchlíků''.', widget=widgets.RadioSelect) gender = models.IntegerField(choices=[[1, 'Muž'], [2, 'Žena']], label="Vaše pohlaví", widget=widgets.RadioSelect) email = models.StringField( label='Váš email') age = models.IntegerField( label='Váš věk', min=1, max=150) politic = models.StringField( label='Jakou stranu jste volil/a při posledních volbách do PSP') job = models.StringField( label='Pracuji jako') payment = models.CurrencyField() correct_answers = models.IntegerField() def role(self): print(self.group.id_in_subsession) if self.group.id_in_subsession == 1: return Constants.group_contr_fixed if self.group.id_in_subsession == 2: return Constants.group_contr_correct