from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants from django.http.response import HttpResponseRedirect def vars_for_all_templates(self): """ get variables from session configs level """ return { 'fee': self.session.config['participation_fee'], 'total_fixed_bonus': c(12 * self.session.config['fixed_payment_per_question']), 'total_payoff': self.session.config['participation_fee'] + self.participant.payoff, 'radio_amounts': zip(Constants.list2, Constants.list1), 'additional_radio': range(0,11,1), } class AttentionCheck1(Page): form_model = 'player' form_fields = ['attention_check'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] and not self.participant.vars['failed_demographics'] class Question1(Page): form_model = 'player' form_fields = ['add_qn_1'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] and not self.participant.vars['failed_demographics'] class Question2(Page): form_model = 'player' form_fields = ['add_qn_2'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] and not self.participant.vars['failed_demographics'] class Question3(Page): form_model = 'player' form_fields = ['add_qn_3'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] and not self.participant.vars['failed_demographics'] class FinishedTasks(Page): def is_displayed(self): return not self.participant.vars['failed_demographics'] and not self.participant.vars['failed_attention'] def before_next_page(self): self.player.set_payoff() if not self.participant.vars['failed_comprehension']: # age counter if self.participant.vars['counter_age'] == 1: self.session.vars['age_1'] += 1 elif self.participant.vars['counter_age'] == 2: self.session.vars['age_2'] += 1 elif self.participant.vars['counter_age'] == 3: self.session.vars['age_3'] += 1 elif self.participant.vars['counter_age'] == 4: self.session.vars['age_4'] += 1 elif self.participant.vars['counter_age'] == 5: self.session.vars['age_5'] += 1 elif self.participant.vars['counter_age'] == 6: self.session.vars['age_6'] += 1 # gender counter if self.participant.vars['counter_gender'] == 1: self.session.vars['gender_1'] += 1 elif self.participant.vars['counter_gender'] == 2: self.session.vars['gender_2'] += 1 # education counter if self.participant.vars['counter_education'] == 1: self.session.vars['education_1'] += 1 elif self.participant.vars['counter_education'] == 2: self.session.vars['education_2'] += 1 elif self.participant.vars['counter_education'] == 3: self.session.vars['education_3'] += 1 elif self.participant.vars['counter_education'] == 4: self.session.vars['education_4'] += 1 # income counter if self.participant.vars['counter_income'] == 1: self.session.vars['income_1'] += 1 elif self.participant.vars['counter_income'] == 2: self.session.vars['income_2'] += 1 elif self.participant.vars['counter_income'] == 3: self.session.vars['income_3'] += 1 elif self.participant.vars['counter_income'] == 4: self.session.vars['income_4'] += 1 elif self.participant.vars['counter_income'] == 5: self.session.vars['income_5'] += 1 elif self.participant.vars['counter_income'] == 6: self.session.vars['income_6'] += 1 elif self.participant.vars['counter_income'] == 7: self.session.vars['income_7'] += 1 elif self.participant.vars['counter_income'] == 8: self.session.vars['income_8'] += 1 elif self.participant.vars['counter_income'] == 9: self.session.vars['income_9'] += 1 # race counter if self.participant.vars['counter_race'] == 1: self.session.vars['race_1'] += 1 elif self.participant.vars['counter_race'] == 2: self.session.vars['race_2'] += 1 elif self.participant.vars['counter_race'] == 3: self.session.vars['race_3'] += 1 elif self.participant.vars['counter_race'] == 4: self.session.vars['race_4'] += 1 elif self.participant.vars['counter_race'] == 5: self.session.vars['race_5'] += 1 class PayoffandGoodbye(Page): def vars_for_template(self): return { } def is_displayed(self): return not self.participant.vars['failed_demographics'] class ToProlific(Page): def is_displayed(self): return not self.participant.vars['failed_demographics'] class FailedAttention(Page): def is_displayed(self): return self.participant.vars['failed_attention'] class GroupLimit(Page): def is_displayed(self): return self.participant.vars['failed_demographics'] page_sequence = [ AttentionCheck1, Question1, Question2, Question3, FinishedTasks, PayoffandGoodbye, FailedAttention, GroupLimit, ToProlific ]