from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants from datetime import datetime import random class Einleitung(Page): pass class SeiteX(Page): form_model = 'player' def get_form_fields(self): if self.player.version_number == 1: return ('justice_x{}_1'.format(self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']]), 'justice_x{}_2'.format( self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']])) else: return ('justice_x{}_2'.format( self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']]), 'justice_x{}_1'.format( self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']])) def vars_for_template(self): bauer1 = ['Adams', 'Conrad', 'Ebeling', 'Gerdes', 'Ibeling', 'Krüger', 'Müller', 'Otto', 'Quidde' ] bauer2 = ['Braun', 'Diehl', 'Faber', 'Hoffmann', 'Jung', 'Lange', 'Neumann', 'Peters', 'Richter'] slider1 = 'justice_x{}_1'.format(self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']]) slider2 = 'justice_x{}_2'.format(self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']]) return { 'num_aufgabe': self.player.participant.vars['num_aufgabe'], 'version': self.player.version_number, 'treatment': self.player.treatment_number, 'num_frage': self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']], 'bauer1': bauer1[self.player.participant.vars['num_fragen_x']-1], 'bauer2': bauer2[self.player.participant.vars['num_fragen_x']-1], 'slider1': slider1, 'slider2': slider2, } def before_next_page(self): self.player.reihenfolge_x += str( self.player.participant.vars['fragen_x'][self.player.participant.vars['num_fragen_x']]) + ', ' self.player.participant.vars['num_aufgabe'] += 1 self.player.participant.vars['num_fragen_x'] += 1 def is_displayed(self): return self.player.participant.vars['num_aufgabe'] <= 3 or self.player.treatment_number == 10 class SeiteY(Page): form_model = 'player' def get_form_fields(self): if self.player.participant.vars['num_fragen_y'] != 3: if self.player.version_number == 1: return ('justice_y{}_1'.format(self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']]), 'justice_y{}_2'.format( self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']])) else: return ('justice_y{}_2'.format( self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']]), 'justice_y{}_1'.format( self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']])) else: if self.player.version_number == 1: return ('justice_z{}_1_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_1_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_2_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_2_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), ) else: return ('justice_z{}_2_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_2_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_1_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]), 'justice_z{}_1_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) ) def vars_for_template(self): num_frage = 0 if self.player.participant.vars['num_fragen_y'] != 3: num_frage = self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']] else: num_frage = self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']] # bauer1 = ['Adams', 'Conrad', 'Ebeling', ] # bauer2 = ['Braun', 'Diehl', 'Faber'] if self.player.participant.vars['num_aufgabe'] < 7: slider1 = 'justice_y{}_1'.format(self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']]) slider2 = 'justice_y{}_2'.format(self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']]) slider3 = '' slider4 = '' if self.player.treatment_number != 10: bauer1 = ['Gerdes', 'Ibeling', 'Krüger',] bauer2 = ['Hoffmann', 'Jung', 'Lange',] else: bauer1 = ['Adams', 'Conrad', 'Ebeling', ] bauer2 = ['Braun', 'Diehl', 'Faber'] else: slider1 = 'justice_z{}_1_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) slider2 = 'justice_z{}_1_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) slider3 = 'justice_z{}_2_1'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) slider4 = 'justice_z{}_2_2'.format( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) if self.player.treatment_number != 10: bauer1 = ['Müller', 'Otto', 'Quidde'] bauer2 = ['Neumann', 'Peters', 'Richter'] else: bauer1 = ['Adams', 'Conrad', 'Ebeling', ] bauer2 = ['Braun', 'Diehl', 'Faber'] if self.player.treatment_number != 10: zahl1 = '10.000' zahl2 = '8.000' zahl3 = '15.000' zahl4 = '9.000' zahl5 = '12.000' zahl6 = '20.000' zahl7 = '24.000' zahl8 = '21.000' zahl9 = '29.000' scheffel = 'Scheffel' else: zahl1 = '100' zahl2 = '80' zahl3 = '150' zahl4 = '90' zahl5 = '120' zahl6 = '200' zahl7 = '240' zahl8 = '210' zahl9 = '290' scheffel = 'Hekto-Scheffel' return { 'num_aufgabe': self.player.participant.vars['num_aufgabe'], 'version': self.player.version_number, 'treatment': self.player.treatment_number, 'num_frage': num_frage, 'bauer1': bauer1[num_frage-1], 'bauer2': bauer2[num_frage-1], 'slider1': slider1, 'slider2': slider2, 'slider3': slider3, 'slider4': slider4, 'scheffel': scheffel, 'zahl1': zahl1, 'zahl2': zahl2, 'zahl3': zahl3, 'zahl4': zahl4, 'zahl5': zahl5, 'zahl6': zahl6, 'zahl7': zahl7, 'zahl8': zahl8, 'zahl9': zahl9, } def before_next_page(self): if self.player.participant.vars['num_fragen_y'] != 3: self.player.reihenfolge_y += str(self.player.participant.vars['fragen_y'][self.player.participant.vars['num_fragen_y']]) + ', ' self.player.participant.vars['num_fragen_y'] += 1 else: self.player.reihenfolge_z += str( self.player.participant.vars['fragen_z'][self.player.participant.vars['num_fragen_z']]) + ', ' self.player.participant.vars['num_fragen_z'] += 1 self.player.participant.vars['num_aufgabe'] += 1 # def is_displayed(self): # return self.player.treatment_number != 10 class SeiteZ(SeiteY): template_name = 'kohaerenz/SeiteY.html' class Demo_Einleitung(Page): pass class Demo_Fragen(Page): form_model = 'player' form_fields = ['geschlecht', 'geschlechtother', 'alter', 'staatsbuergerschaft', 'staatsbuergerschaftother', 'abschluss', 'studienfach', 'beschaeftigung'] class Demo_Bedarfe(Page): form_model = 'player' def get_form_fields(self): if self.player.treatment_number == 0 or self.player.treatment_number == 10: return ('bedarfe0',) else: return ('bedarfe1','bedarfe2','bedarfsgerecht','wuerde') def vars_for_template(self): return { 'treatment': self.player.treatment_number, } class verantwortung(Page): form_model = 'player' def get_form_fields(self): return ('soziodemozustaendVerant{}'.format(self.player.participant.vars['verant'][0]), 'soziodemozustaendVerant{}'.format(self.player.participant.vars['verant'][1]), 'soziodemozustaendVerant{}'.format(self.player.participant.vars['verant'][2]), 'soziodemozustaendVerant{}'.format(self.player.participant.vars['verant'][3]), 'soziodemozustaendVerant{}'.format(self.player.participant.vars['verant'][4]),) def vars_for_template(self): questions = self.player.participant.vars['verant'] return { 'questions': questions, } class linksrechtsselbst(Page): form_model = 'player' form_fields = ['linksrechtsselbst'] class linksrechtspartei(Page): form_model = 'player' def get_form_fields(self): return ('linksrechtspartei{}'.format(self.player.participant.vars['partei'][0]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][1]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][2]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][3]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][4]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][5]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][6]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][7]), 'linksrechtspartei{}'.format(self.player.participant.vars['partei'][8]),) def vars_for_template(self): questions = self.player.participant.vars['partei'] return { 'questions': questions, } class risiko(Page): form_model = 'player' form_fields = ['risiko'] def vars_for_template(self): return { 'questions': [0, ], } # def before_next_page(self): # self.player.time_ended = datetime.utcnow() class Results(Page): pass class monoeinleitung(Page): def is_displayed(self): return (self.player.participant.vars['number_mono'] == 0 and self.player.version_number == 1) or (self.player.participant.vars['number_mono'] == 1 and self.player.version_number == 2) def vars_for_template(self): version_number = self.player.version_number return { 'version_number': version_number, } class monostich(Page): def is_displayed(self): return (self.player.participant.vars['number_mono'] == 0 and self.player.version_number == 1) or ( self.player.participant.vars['number_mono'] == 1 and self.player.version_number == 2) class monofragen(Page): form_model = 'player' def get_form_fields(self): return self.player.get_tuple_of_mono_form_fields('') def before_next_page(self): self.player.participant.vars['num_question_mono'] = 1 def vars_for_template(self): return { 'question_data': self.player.get_question_data_mono_as_list(), } def is_displayed(self): return (self.player.participant.vars['number_mono'] == 0 and self.player.version_number == 1) or ( self.player.participant.vars['number_mono'] == 1 and self.player.version_number == 2) class monosicherheit(Page): form_model = 'player' def get_form_fields(self): return self.player.get_tuple_of_mono_form_fields('Sicher') def vars_for_template(self): return { 'question_data': self.player.get_question_data_mono_as_list(), } def is_displayed(self): return (self.player.participant.vars['number_mono'] == 0 and self.player.version_number == 1) or ( self.player.participant.vars['number_mono'] == 1 and self.player.version_number == 2) class monofrei(Page): form_model = 'player' form_fields = ['monofrei'] def is_displayed(self): return (self.player.participant.vars['number_mono'] == 0 and self.player.version_number == 1) or ( self.player.participant.vars['number_mono'] == 1 and self.player.version_number == 2) class seneinleitung(Page): def is_displayed(self): return True def vars_for_template(self): version_number = self.player.version_number return { 'version_number': version_number, } class senstich(Page): def is_displayed(self): return True #self.player.treatment_number == 1 class sen(Page): form_model = 'player' def get_form_fields(self): return ('Sen{}'.format(self.player.participant.vars['situation_id_sen']), ) def vars_for_template(self): question_data = self.participant.vars['questions_sen'][self.player.participant.vars['num_question_sen'] - 1] return { 'treatment_nummer': self.player.treatment_number, 'frage_nummer': self.player.participant.vars['num_question_sen'], 'question_data': question_data } def before_next_page(self): post_dict = self.request.POST value_sen = post_dict.get('Sen{}'.format(int(self.player.participant.vars['situation_id_sen'])), ) self.player.participant.vars['value_sen'] = value_sen class senvalue(Page): form_model = 'player' def get_form_fields(self): return ['Sen{}value'.format(self.player.participant.vars['situation_id_sen'])] def is_displayed(self): return int(self.player.participant.vars['value_sen']) != 3 def vars_for_template(self): question_data = self.participant.vars['questions_sen'][self.player.participant.vars['num_question_sen'] - 1] return { 'treatment_nummer': self.player.treatment_number, 'value_sen': self.player.participant.vars['value_sen'], 'frage_nummer': self.player.participant.vars['num_question_sen'], 'question_data': question_data } class sensicher(Page): form_model = 'player' def get_form_fields(self): return ('Sen{}sicher'.format(self.player.participant.vars['situation_id_sen']),) def is_displayed(self): return True def before_next_page(self): self.player.reihenfolge_sen += 'sen{} '.format(self.player.participant.vars['situation_id_sen']) if self.player.participant.vars['num_question_sen'] != Constants.num_total_questions_sen: self.player.participant.vars['num_question_sen'] += 1 self.player.participant.vars['situation_id_sen'] = self.player.current_question_sen()['situation_id'] class senfrei(Page): form_model = 'player' form_fields = ['senfrei'] def is_displayed(self): return True def before_next_page(self): self.player.participant.vars['number_mono'] += 1 class zustimmung(Page): form_model = 'player' def get_form_fields(self): return ('zustimmungStaat{}'.format(self.player.participant.vars['staat'][0]), 'zustimmungStaat{}'.format(self.player.participant.vars['staat'][1]), 'zustimmungStaat{}'.format(self.player.participant.vars['staat'][2]), 'zustimmungStaat{}'.format(self.player.participant.vars['staat'][3]), 'zustimmungStaat{}'.format(self.player.participant.vars['staat'][4]), 'zustimmungStaat{}'.format(self.player.participant.vars['staat'][5]),) def vars_for_template(self): return { 'questions': self.player.participant.vars['staat'], } class Kronow_Einleitung1(Page): pass class Kronow_Einleitung2(Page): pass class Einleitung_Monosen(Page): pass class Code(Page): form_model = 'player' form_fields = ['code'] def is_displayed(self): return self.session.config['online'] == True page_sequence = [ Einleitung, # Kronow_Einleitung1, SeiteX, SeiteX, SeiteX, Demo_Einleitung, Demo_Fragen, verantwortung, linksrechtsselbst, linksrechtspartei, risiko, Kronow_Einleitung2, SeiteY, SeiteY, SeiteY, SeiteZ, SeiteZ, SeiteZ, Demo_Bedarfe, Einleitung_Monosen, ] page_sequence.extend([monoeinleitung,monostich,monofragen,monosicherheit,monofrei,seneinleitung,senstich]) for sen_iterator in Constants.total_questions_sen: page_sequence.extend([sen,senvalue,sensicher]) page_sequence.extend([senfrei, monoeinleitung,monostich,monofragen,monosicherheit,monofrei,zustimmung,Code,Results])