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 ParticipantsExceeded(Page): def is_displayed(self): a = self.session.vars['data_participants_num'] b = int(self.session.config['max_participants']) if a >= b: return True else: return False def vars_for_template(self): return { 'data_participants_num': self.session.vars['data_participants_num'], 'max_participants': self.session.config['max_participants'] } class Einleitung(Page): def vars_for_template(self): online = self.session.config['online'] return { 'online': online, } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True def before_next_page(self): self.player.time_started = datetime.utcnow() class Demo_Einleitung(Page): def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Demo_Fragen(Page): form_model = 'player' form_fields = ['geschlecht', 'geschlechtother', 'alter', 'staatsbuergerschaft', 'staatsbuergerschaftother', 'abschluss', 'studienfach', 'beschaeftigung'] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Demo_Einkommen(Page): form_model = 'player' form_fields = ['einkommen', 'einkommen_eltern', ] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Demo_Bedarfe(Page): form_model = 'player' def get_form_fields(self): return ('bedarfsgerecht',) def vars_for_template(self): return { 'treatment': self.player.treatment_number, } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True 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, } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class linksrechtsselbst(Page): form_model = 'player' form_fields = ['linksrechtsselbst'] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True 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, } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class risiko(Page): form_model = 'player' form_fields = ['risiko'] def vars_for_template(self): return { 'questions': [0, ], } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Gerechtigkeit(Page): form_model = 'player' form_fields = ['CheckerGerechtigkeit'] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Kommentar(Page): form_model = 'player' form_fields = ['kommentar'] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Erinnerungsfrage(Page): form_model = 'player' form_fields = ['ErinnerungBedarfeE', 'ErinnerungBedarfeN', 'ErinnerungLeistung'] def vars_for_template(self): return { 'treatment': self.player.treatment_number, 'person_effort': self.player.participant.vars['persons'][2], 'person_need': self.player.participant.vars['persons'][3], } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class ErinnerungsfrageZwei(Page): form_model = 'player' def get_form_fields(self): return ('Checker{}'.format(self.player.participant.vars['Checker'][0]), 'Checker{}'.format(self.player.participant.vars['Checker'][1]), 'Checker{}'.format(self.player.participant.vars['Checker'][2]), 'Checker{}'.format(self.player.participant.vars['Checker'][3]), 'Checker{}'.format(self.player.participant.vars['Checker'][4]), 'Checker{}'.format(self.player.participant.vars['Checker'][5]), 'Checker{}'.format(self.player.participant.vars['Checker'][6])) def vars_for_template(self): return { 'questions': self.player.participant.vars['Checker'], } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class ErinnerungsfrageDrei(Page): form_model = 'player' def get_form_fields(self): return ('Scheite{}'.format(self.player.participant.vars['Scheite'][0]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][1]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][2]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][3]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][4]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][5]), 'Scheite{}'.format(self.player.participant.vars['Scheite'][6])) def vars_for_template(self): return { 'questions': self.player.participant.vars['Scheite'], } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Results(Page): def vars_for_template(self): online = self.session.config['online'] return { 'online': online, } def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Gerechtigkeitsskala(Page): def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if self.player.version_number_skala == 1 and self.player.part != 1 \ or self.player.version_number_skala == 2 and self.player.part == 1: return True form_model = 'player' def get_form_fields(self): return ('skala_{}'.format(self.player.participant.vars['BSJO'][0]), 'skala_{}'.format(self.player.participant.vars['BSJO'][1]), 'skala_{}'.format(self.player.participant.vars['BSJO'][2]), 'skala_{}'.format(self.player.participant.vars['BSJO'][3]), 'skala_{}'.format(self.player.participant.vars['BSJO'][4]), 'skala_{}'.format(self.player.participant.vars['BSJO'][5]), 'skala_{}'.format(self.player.participant.vars['BSJO'][6]), 'skala_{}'.format(self.player.participant.vars['BSJO'][7]), 'skala_{}'.format(self.player.participant.vars['BSJO'][8]), 'skala_{}'.format(self.player.participant.vars['BSJO'][9]), 'skala_{}'.format(self.player.participant.vars['BSJO'][10]), 'skala_{}'.format(self.player.participant.vars['BSJO'][11]),) def vars_for_template(self): return { 'questions': self.player.participant.vars['BSJO'], } class zustimmung(Page): form_model = 'player' def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if self.player.version_number_skala == 1 and self.player.part == 1 \ or self.player.version_number_skala == 2 and self.player.part != 1: return True 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): def before_next_page(self): self.player.part += 1 def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Kronow_Einleitung2(Page): def before_next_page(self): self.player.part += 1 def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Code(Page): form_model = 'player' # form_fields = ['code'] form_fields = ['Name', 'Email', 'Matrikelnummer', 'Uni'] def is_displayed(self): return self.session.config['online'] == True def before_next_page(self): string = 'Name: ' + str(self.player.Name) + " Email: " + str(self.player.Email) + " Matrikelnummer: " \ + str(self.player.Matrikelnummer) + " Universität: " + str(self.player.Uni) + ". " self.session.vars['data_participants'].append(string) self.session.vars['data_participants_num'] += 1 random.shuffle(self.session.vars['data_participants']) player = self.group.get_player_by_id(1) player.data_participants = '' y = '' for x in range(0, self.session.vars['data_participants_num'], 1): y += str(self.session.vars['data_participants'][x]) player.data_participants = y self.player.Matrikelnummer = '' self.player.Email = '' self.player.Name = '' self.player.Uni = '' self.player.time_ended = datetime.utcnow() class verteilfrage(Page): form_model = 'player' form_fields = ['verteilfrage'] def is_displayed(self): if self.player.participant._is_bot == 1: return False else: return True class Holzvignette(Page): pass class Block1(Holzvignette): template_name = 'kohaerenz2/HolzVignette.html' form_model = 'player' def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if ((self.player.version_number == 1 or self.player.version_number == 2) and self.player.part == 1) or ( (self.player.version_number == 3 or self.player.version_number == 4) and self.player.part == 2): if self.session.is_demo == 1: if Constants.num_demo_questions >= self.player.participant.vars['num_question_block1']: return True else: return False else: return True else: return False def vars_for_template(self): situation_id = int(self.player.participant.vars['situation_id_block1']) question_data = self.participant.vars['questions_block1'][ self.player.participant.vars['num_question_block1'] - 1] if self.player.version_number == 1 or self.player.version_number == 2: block_nummer = 1 else: block_nummer = 2 version = self.player.version_number if self.player.treatment_number == 1: if self.player.version_number == 1 or self.player.version_number == 2: person_effort = self.player.participant.vars['persons'][0] person_need = self.player.participant.vars['persons'][1] else: person_effort = self.player.participant.vars['persons'][2] person_need = self.player.participant.vars['persons'][3] elif self.player.treatment_number == 2: person_effort = 'Sie' person_need = 'Die andere Person' elif self.player.treatment_number == 3: person_effort = 'Die andere Person' person_need = 'Sie' if version == 1: header1 = 'hat geschlagen' header2 = 'braucht' personrow1 = person_effort input1_row1 = question_data['person_E_effort'] input2_row1 = question_data['person_E_need'] personrow2 = person_need input1_row2 = question_data['person_N_effort'] input2_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block1_{}_E'.format(situation_id) feld2 = 'Block1_{}_N'.format(situation_id) feld1_id = 'id_Block1_{}_E'.format(situation_id) feld2_id = 'id_Block1_{}_N'.format(situation_id) elif version == 2: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow1 = person_effort input2_row1 = question_data['person_E_effort'] input1_row1 = question_data['person_E_need'] personrow2 = person_need input2_row2 = question_data['person_N_effort'] input1_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block1_{}_E'.format(situation_id) feld2 = 'Block1_{}_N'.format(situation_id) feld1_id = 'id_Block1_{}_E'.format(situation_id) feld2_id = 'id_Block1_{}_N'.format(situation_id) elif version == 3: header1 = 'hat geschlagen' header2 = 'braucht' personrow2 = person_effort input1_row2 = question_data['person_E_effort'] input2_row2 = question_data['person_E_need'] personrow1 = person_need input1_row1 = question_data['person_N_effort'] input2_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block1_{}_E'.format(situation_id) feld1 = 'Block1_{}_N'.format(situation_id) feld2_id = 'id_Block1_{}_E'.format(situation_id) feld1_id = 'id_Block1_{}_N'.format(situation_id) elif version == 4: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow2 = person_effort input2_row2 = question_data['person_E_effort'] input1_row2 = question_data['person_E_need'] personrow1 = person_need input2_row1 = question_data['person_N_effort'] input1_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block1_{}_E'.format(situation_id) feld1 = 'Block1_{}_N'.format(situation_id) feld2_id = 'id_Block1_{}_E'.format(situation_id) feld1_id = 'id_Block1_{}_N'.format(situation_id) return { 'situation_id': int(self.player.participant.vars['situation_id_block1']), 'treatment_nummer': self.player.treatment_number, 'frage_nummer': self.player.participant.vars['num_question_block1'], 'block_nummer': block_nummer, 'person_need': person_need, 'person_effort': person_effort, 'effort_relation': question_data['effort_relation'], 'need_relation': question_data['need_relation'], 'endowment': question_data['endowment'], 'feld1': feld1, 'feld2': feld2, 'feld1_id': feld1_id, 'feld2_id': feld2_id, 'header1': header1, 'header2': header2, 'row1_cell1': personrow1, 'row1_cell2': input1_row1, 'row1_cell3': input2_row1, 'row2_cell1': personrow2, 'row2_cell2': input1_row2, 'row2_cell3': input2_row2, 'row3_cell1': total1, 'row3_cell2': total2, 'version': version } def before_next_page(self): if self.session.is_demo == 0: num_questions = Constants.num_total_questions_block1 else: num_questions = Constants.num_demo_questions self.player.reihenfolge_block1 += 'block1_{}, '.format(self.player.participant.vars['situation_id_block1']) if self.player.participant.vars['num_question_block1'] != num_questions: self.player.participant.vars['num_question_block1'] += 1 self.player.participant.vars['situation_id_block1'] = self.player.current_question_block1()['situation_id'] else: self.player.participant.vars['num_question_block1'] += 1 def get_form_fields(self): return ('Block1_{}_E'.format(self.player.participant.vars['situation_id_block1']), 'Block1_{}_N'.format(self.player.participant.vars['situation_id_block1'])) def error_message(self, values): question_data = self.participant.vars['questions_block1'][ self.player.participant.vars['num_question_block1'] - 1] if values['Block1_{}_E'.format(self.player.participant.vars['situation_id_block1'])] + values[ 'Block1_{}_N'.format(self.player.participant.vars['situation_id_block1'])] > int( question_data['endowment']): return 'Sie können insgesamt nur maximal ' + str(question_data['endowment']) + ' Scheite Holz verteilen.' elif values['Block1_{}_E'.format(self.player.participant.vars['situation_id_block1'])] + values[ 'Block1_{}_N'.format(self.player.participant.vars['situation_id_block1'])] < int( question_data['endowment']): return 'Bitte verteilen Sie alle ' + str(question_data['endowment']) + ' Scheite Holz.' class Block2(Holzvignette): template_name = 'kohaerenz2/HolzVignette.html' form_model = 'player' def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if ((self.player.version_number == 1 or self.player.version_number == 2) and self.player.part == 2) or ( (self.player.version_number == 3 or self.player.version_number == 4) and self.player.part == 1): if self.session.is_demo == 1: if Constants.num_demo_questions >= self.player.participant.vars['num_question_block2']: return True else: return False else: return True else: return False def vars_for_template(self): situation_id = int(self.player.participant.vars['situation_id_block2']) question_data = self.participant.vars['questions_block2'][ self.player.participant.vars['num_question_block2'] - 1] if self.player.version_number == 1: version = 4 elif self.player.version_number == 2: version = 3 elif self.player.version_number == 3: version = 2 elif self.player.version_number == 4: version = 1 if self.player.version_number == 1 or self.player.version_number == 2: block_nummer = 2 else: block_nummer = 1 if self.player.treatment_number == 1: if self.player.version_number == 1 or self.player.version_number == 2: person_effort = self.player.participant.vars['persons'][2] person_need = self.player.participant.vars['persons'][3] else: person_effort = self.player.participant.vars['persons'][0] person_need = self.player.participant.vars['persons'][1] elif self.player.treatment_number == 2: person_effort = 'Sie' person_need = 'Die andere Person' elif self.player.treatment_number == 3: person_effort = 'Die andere Person' person_need = 'Sie' if version == 1: header1 = 'hat geschlagen' header2 = 'braucht' personrow1 = person_effort input1_row1 = question_data['person_E_effort'] input2_row1 = question_data['person_E_need'] personrow2 = person_need input1_row2 = question_data['person_N_effort'] input2_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block2_{}_E'.format(situation_id) feld2 = 'Block2_{}_N'.format(situation_id) feld1_id = 'id_Block2_{}_E'.format(situation_id) feld2_id = 'id_Block2_{}_N'.format(situation_id) elif version == 2: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow1 = person_effort input2_row1 = question_data['person_E_effort'] input1_row1 = question_data['person_E_need'] personrow2 = person_need input2_row2 = question_data['person_N_effort'] input1_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block2_{}_E'.format(situation_id) feld2 = 'Block2_{}_N'.format(situation_id) feld1_id = 'id_Block2_{}_E'.format(situation_id) feld2_id = 'id_Block2_{}_N'.format(situation_id) elif version == 3: header1 = 'hat geschlagen' header2 = 'braucht' personrow2 = person_effort input1_row2 = question_data['person_E_effort'] input2_row2 = question_data['person_E_need'] personrow1 = person_need input1_row1 = question_data['person_N_effort'] input2_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block2_{}_E'.format(situation_id) feld1 = 'Block2_{}_N'.format(situation_id) feld2_id = 'id_Block2_{}_E'.format(situation_id) feld1_id = 'id_Block2_{}_N'.format(situation_id) elif version == 4: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow2 = person_effort input2_row2 = question_data['person_E_effort'] input1_row2 = question_data['person_E_need'] personrow1 = person_need input2_row1 = question_data['person_N_effort'] input1_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block2_{}_E'.format(situation_id) feld1 = 'Block2_{}_N'.format(situation_id) feld2_id = 'id_Block2_{}_E'.format(situation_id) feld1_id = 'id_Block2_{}_N'.format(situation_id) return { 'situation_id': int(self.player.participant.vars['situation_id_block2']), 'treatment_nummer': self.player.treatment_number, 'frage_nummer': self.player.participant.vars['num_question_block2'], 'block_nummer': block_nummer, 'person_need': person_need, 'person_effort': person_effort, 'effort_relation': question_data['effort_relation'], 'need_relation': question_data['need_relation'], 'endowment': question_data['endowment'], 'feld1': feld1, 'feld2': feld2, 'feld1_id': feld1_id, 'feld2_id': feld2_id, 'header1': header1, 'header2': header2, 'row1_cell1': personrow1, 'row1_cell2': input1_row1, 'row1_cell3': input2_row1, 'row2_cell1': personrow2, 'row2_cell2': input1_row2, 'row2_cell3': input2_row2, 'row3_cell1': total1, 'row3_cell2': total2, 'version': version } def before_next_page(self): if self.session.is_demo == 0: num_questions = Constants.num_total_questions_block2 else: num_questions = Constants.num_demo_questions self.player.reihenfolge_block2 += 'block2_{}, '.format(self.player.participant.vars['situation_id_block2']) if self.player.participant.vars['num_question_block2'] != num_questions: self.player.participant.vars['num_question_block2'] += 1 self.player.participant.vars['situation_id_block2'] = self.player.current_question_block2()['situation_id'] else: self.player.participant.vars['num_question_block2'] += 1 def get_form_fields(self): return ('Block2_{}_E'.format(self.player.participant.vars['situation_id_block2']), 'Block2_{}_N'.format(self.player.participant.vars['situation_id_block2'])) def error_message(self, values): question_data = self.participant.vars['questions_block2'][ self.player.participant.vars['num_question_block2'] - 1] if values['Block2_{}_E'.format(self.player.participant.vars['situation_id_block2'])] + values[ 'Block2_{}_N'.format(self.player.participant.vars['situation_id_block2'])] > int( question_data['endowment']): return 'Sie können insgesamt nur maximal ' + str( question_data['endowment']) + ' Scheite Holz verteilen.' elif values['Block2_{}_E'.format(self.player.participant.vars['situation_id_block2'])] + values[ 'Block2_{}_N'.format(self.player.participant.vars['situation_id_block2'])] < int( question_data['endowment']): return 'Bitte verteilen Sie alle ' + str(question_data['endowment']) + ' Scheite Holz.' class Block3(Holzvignette): template_name = 'kohaerenz2/HolzVignette.html' form_model = 'player' def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if self.player.version_number == 1 or self.player.version_number == 2: if self.session.is_demo == 1: if Constants.num_demo_questions >= self.player.participant.vars['num_question_block3']: return True else: return False else: return True def vars_for_template(self): situation_id = int(self.player.participant.vars['situation_id_block3']) question_data = self.participant.vars['questions_block3'][ self.player.participant.vars['num_question_block3'] - 1] version = self.player.version_number if self.player.treatment_number == 1: person_effort = self.player.participant.vars['persons'][4] person_need = self.player.participant.vars['persons'][5] elif self.player.treatment_number == 2: person_effort = 'Sie' person_need = 'Die andere Person' elif self.player.treatment_number == 3: person_effort = 'Die andere Person' person_need = 'Sie' if version == 1: header1 = 'hat geschlagen' header2 = 'braucht' personrow1 = person_effort input1_row1 = question_data['person_E_effort'] input2_row1 = question_data['person_E_need'] personrow2 = person_need input1_row2 = question_data['person_N_effort'] input2_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block3_{}_E'.format(situation_id) feld2 = 'Block3_{}_N'.format(situation_id) feld1_id = 'id_Block3_{}_E'.format(situation_id) feld2_id = 'id_Block3_{}_N'.format(situation_id) elif version == 2: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow1 = person_effort input2_row1 = question_data['person_E_effort'] input1_row1 = question_data['person_E_need'] personrow2 = person_need input2_row2 = question_data['person_N_effort'] input1_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block3_{}_E'.format(situation_id) feld2 = 'Block3_{}_N'.format(situation_id) feld1_id = 'id_Block3_{}_E'.format(situation_id) feld2_id = 'id_Block3_{}_N'.format(situation_id) elif version == 3: header1 = 'hat geschlagen' header2 = 'braucht' personrow2 = person_effort input1_row2 = question_data['person_E_effort'] input2_row2 = question_data['person_E_need'] personrow1 = person_need input1_row1 = question_data['person_N_effort'] input2_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block3_{}_E'.format(situation_id) feld1 = 'Block3_{}_N'.format(situation_id) feld2_id = 'id_Block3_{}_E'.format(situation_id) feld1_id = 'id_Block3_{}_N'.format(situation_id) elif version == 4: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow2 = person_effort input2_row2 = question_data['person_E_effort'] input1_row2 = question_data['person_E_need'] personrow1 = person_need input2_row1 = question_data['person_N_effort'] input1_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block3_{}_E'.format(situation_id) feld1 = 'Block3_{}_N'.format(situation_id) feld2_id = 'id_Block3_{}_E'.format(situation_id) feld1_id = 'id_Block3_{}_N'.format(situation_id) return { 'situation_id': int(self.player.participant.vars['situation_id_block3']), 'treatment_nummer': self.player.treatment_number, 'frage_nummer': self.player.participant.vars['num_question_block3'], 'block_nummer': 3, 'person_need': person_need, 'person_effort': person_effort, 'effort_relation': question_data['effort_relation'], 'need_relation': question_data['need_relation'], 'endowment': question_data['endowment'], 'feld1': feld1, 'feld2': feld2, 'feld1_id': feld1_id, 'feld2_id': feld2_id, 'header1': header1, 'header2': header2, 'row1_cell1': personrow1, 'row1_cell2': input1_row1, 'row1_cell3': input2_row1, 'row2_cell1': personrow2, 'row2_cell2': input1_row2, 'row2_cell3': input2_row2, 'row3_cell1': total1, 'row3_cell2': total2, 'version': version } def before_next_page(self): if self.session.is_demo == 0: num_questions = Constants.num_total_questions_block3 else: num_questions = Constants.num_demo_questions self.player.reihenfolge_block3 += 'block3_{}, '.format(self.player.participant.vars['situation_id_block3']) if self.player.participant.vars['num_question_block3'] != num_questions: self.player.participant.vars['num_question_block3'] += 1 self.player.participant.vars['situation_id_block3'] = self.player.current_question_block3()['situation_id'] else: self.player.participant.vars['num_question_block3'] += 1 def get_form_fields(self): return ('Block3_{}_E'.format(self.player.participant.vars['situation_id_block3']), 'Block3_{}_N'.format(self.player.participant.vars['situation_id_block3'])) def error_message(self, values): question_data = self.participant.vars['questions_block3'][ self.player.participant.vars['num_question_block3'] - 1] if values['Block3_{}_E'.format(self.player.participant.vars['situation_id_block3'])] + values[ 'Block3_{}_N'.format(self.player.participant.vars['situation_id_block3'])] > int( question_data['endowment']): return 'Sie können insgesamt nur maximal ' + str( question_data['endowment']) + ' Scheite Holz verteilen.' elif values['Block3_{}_E'.format(self.player.participant.vars['situation_id_block3'])] + values[ 'Block3_{}_N'.format(self.player.participant.vars['situation_id_block3'])] < int( question_data['endowment']): return 'Bitte verteilen Sie alle ' + str(question_data['endowment']) + ' Scheite Holz.' class Block4(Holzvignette): template_name = 'kohaerenz2/HolzVignette.html' form_model = 'player' def is_displayed(self): if self.player.participant._is_bot == 1: return False else: if self.player.version_number == 3 or self.player.version_number == 4: if self.session.is_demo == 1: if Constants.num_demo_questions >= self.player.participant.vars['num_question_block4']: return True else: return False else: return True def vars_for_template(self): situation_id = int(self.player.participant.vars['situation_id_block4']) question_data = self.participant.vars['questions_block4'][ self.player.participant.vars['num_question_block4'] - 1] if self.player.version_number == 1: version = 4 elif self.player.version_number == 2: version = 3 elif self.player.version_number == 3: version = 2 elif self.player.version_number == 4: version = 1 if self.player.treatment_number == 1: person_effort = self.player.participant.vars['persons'][4] person_need = self.player.participant.vars['persons'][5] elif self.player.treatment_number == 2: person_effort = 'Sie' person_need = 'Die andere Person' elif self.player.treatment_number == 3: person_effort = 'Die andere Person' person_need = 'Sie' if version == 1: header1 = 'hat geschlagen' header2 = 'braucht' personrow1 = person_effort input1_row1 = question_data['person_E_effort'] input2_row1 = question_data['person_E_need'] personrow2 = person_need input1_row2 = question_data['person_N_effort'] input2_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block4_{}_E'.format(situation_id) feld2 = 'Block4_{}_N'.format(situation_id) feld1_id = 'id_Block4_{}_E'.format(situation_id) feld2_id = 'id_Block4_{}_N'.format(situation_id) elif version == 2: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow1 = person_effort input2_row1 = question_data['person_E_effort'] input1_row1 = question_data['person_E_need'] personrow2 = person_need input2_row2 = question_data['person_N_effort'] input1_row2 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld1 = 'Block4_{}_E'.format(situation_id) feld2 = 'Block4_{}_N'.format(situation_id) feld1_id = 'id_Block4_{}_E'.format(situation_id) feld2_id = 'id_Block4_{}_N'.format(situation_id) elif version == 3: header1 = 'hat geschlagen' header2 = 'braucht' personrow2 = person_effort input1_row2 = question_data['person_E_effort'] input2_row2 = question_data['person_E_need'] personrow1 = person_need input1_row1 = question_data['person_N_effort'] input2_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block4_{}_E'.format(situation_id) feld1 = 'Block4_{}_N'.format(situation_id) feld2_id = 'id_Block4_{}_E'.format(situation_id) feld1_id = 'id_Block4_{}_N'.format(situation_id) elif version == 4: # Needs and effort are reversed in Version 2 header2 = 'hat geschlagen' header1 = 'braucht' personrow2 = person_effort input2_row2 = question_data['person_E_effort'] input1_row2 = question_data['person_E_need'] personrow1 = person_need input2_row1 = question_data['person_N_effort'] input1_row1 = question_data['person_N_need'] total1 = int(input1_row1) + int(input1_row2) total2 = int(input2_row1) + int(input2_row2) feld2 = 'Block4_{}_E'.format(situation_id) feld1 = 'Block4_{}_N'.format(situation_id) feld2_id = 'id_Block4_{}_E'.format(situation_id) feld1_id = 'id_Block4_{}_N'.format(situation_id) return { 'situation_id': int(self.player.participant.vars['situation_id_block4']), 'treatment_nummer': self.player.treatment_number, 'frage_nummer': self.player.participant.vars['num_question_block4'], 'block_nummer': 4, 'person_need': person_need, 'person_effort': person_effort, 'effort_relation': question_data['effort_relation'], 'need_relation': question_data['need_relation'], 'endowment': question_data['endowment'], 'feld1': feld1, 'feld2': feld2, 'feld1_id': feld1_id, 'feld2_id': feld2_id, 'header1': header1, 'header2': header2, 'row1_cell1': personrow1, 'row1_cell2': input1_row1, 'row1_cell3': input2_row1, 'row2_cell1': personrow2, 'row2_cell2': input1_row2, 'row2_cell3': input2_row2, 'row3_cell1': total1, 'row3_cell2': total2, 'version': version } def before_next_page(self): if self.session.is_demo == 0: num_questions = Constants.num_total_questions_block4 else: num_questions = Constants.num_demo_questions self.player.reihenfolge_block4 += 'block4_{}, '.format(self.player.participant.vars['situation_id_block4']) if self.player.participant.vars['num_question_block4'] != num_questions: self.player.participant.vars['num_question_block4'] += 1 self.player.question_data_block4 = self.player.current_question_block4() self.player.participant.vars['situation_id_block4'] = self.player.question_data_block4['situation_id'] else: self.player.participant.vars['num_question_block4'] += 1 def get_form_fields(self): return ('Block4_{}_E'.format(self.player.participant.vars['situation_id_block4']), 'Block4_{}_N'.format(self.player.participant.vars['situation_id_block4'])) def error_message(self, values): question_data = self.participant.vars['questions_block4'][ self.player.participant.vars['num_question_block4'] - 1] if values['Block4_{}_E'.format(self.player.participant.vars['situation_id_block4'])] + values[ 'Block4_{}_N'.format(self.player.participant.vars['situation_id_block4'])] > int( question_data['endowment']): return 'Sie können insgesamt nur maximal ' + str( question_data['endowment']) + ' Scheite Holz verteilen.' elif values['Block4_{}_E'.format(self.player.participant.vars['situation_id_block4'])] + values[ 'Block4_{}_N'.format(self.player.participant.vars['situation_id_block4'])] < int( question_data['endowment']): return 'Bitte verteilen Sie alle ' + str(question_data['endowment']) + ' Scheite Holz.' page_sequence = [] t_0 = [ ParticipantsExceeded, Einleitung, zustimmung, Gerechtigkeitsskala, # # verteilfrage, ] page_sequence.extend(t_0) for blah in Constants.total_questions_block1: blubb = [Block1] page_sequence.extend(blubb) for blah2 in Constants.total_questions_block2: blubb = [Block2] page_sequence.extend(blubb) t_1 = [ Gerechtigkeit, Kronow_Einleitung1, ] page_sequence.extend(t_1) for b3 in Constants.total_questions_block2: xy = [Block2] page_sequence.extend(xy) for b4 in Constants.total_questions_block1: xy = [Block1] page_sequence.extend(xy) t_blah = [ ErinnerungsfrageZwei, Demo_Einleitung, Demo_Fragen, Demo_Einkommen, verantwortung, linksrechtsselbst, linksrechtspartei, risiko, Kronow_Einleitung2, ] page_sequence.extend(t_blah) for blah3 in Constants.total_questions_block3: blubb = [Block3] page_sequence.extend(blubb) for blah4 in Constants.total_questions_block4: blubb = [Block4] page_sequence.extend(blubb) t_blah = [ ErinnerungsfrageDrei, Demo_Bedarfe, zustimmung, Erinnerungsfrage, Gerechtigkeitsskala, # Kommentar, Code, Results ] page_sequence.extend(t_blah)