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 shared_vars(self): """ get variables from session configs level """ return { 'fee': self.session.config['participation_fee'], # 'condition_load': self.participant.vars['condition_load'], # 'every_xth_person_paid': self.session.config['every_xth_person_paid'], # 'memory_payoff': self.participant.vars['memory_payoff'], 'no_raven_matrices': Constants.no_raven_matrices, 'raven_incentive': c(self.session.config['raven_incentive']), 'total_fixed_bonus': c(9 * self.session.config['fixed_round_bonus']), } class Sociodemographics(Page): form_model = 'player' form_fields = ['gender', 'age', 'education', 'income'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def before_next_page(self): self.player.draw_gender_spec() class FinishedTasks(Page): def before_next_page(self): self.player.set_payoff() class PayoffandGoodbye(Page): def vars_for_template(self): return { # 'payoff_for_guess': self.player.payoff, 'additional_bonus': self.player.additional_bonus, # 'get_paid': self.player.get_paid, 'total_earnings': self.player.overall_bonus_incl_reward, #shared vars **shared_vars(self), } class IncomeDist(Page): form_model = 'player' form_fields = ['income_guess', 'percentile_ranking'] # def before_next_page(self): # self.player.percentile_ranking = 100 - self.player.percentile_ranking class IncomeDistCertainty(Page): form_model = 'player' form_fields = ['certainty'] def vars_for_template(self): return { 'string_choice': Constants.choices_buckets[self.player.percentile_ranking - 1][1], #shared vars **shared_vars(self), } class IntroRaven(Page): def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class AttentionCheck1(Page): form_model = 'player' form_fields = ['att_a1','att_a2','att_a3','att_a4','att_a5'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) def before_next_page(self): try: self.player.att_a1 except TypeError: self.player.att_a1 = False try: self.player.att_a2 except TypeError: self.player.att_a2 = False try: self.player.att_a3 except TypeError: self.player.att_a3 = False try: self.player.att_a4 except TypeError: self.player.att_a4 = False try: self.player.att_a5 except TypeError: self.player.att_a5 = False if self.player.att_a1 and not self.player.att_a2 and not self.player.att_a3 and not self.player.att_a4 and self.player.att_a5: self.player.attention_check_2 = True class Raven1(Page): form_model = 'player' form_fields = ['raven_1'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven2(Page): form_model = 'player' form_fields = ['raven_2'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven3(Page): form_model = 'player' form_fields = ['raven_3'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven4(Page): form_model = 'player' form_fields = ['raven_4'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven5(Page): form_model = 'player' form_fields = ['raven_5'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven6(Page): form_model = 'player' form_fields = ['raven_6'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) class Raven7(Page): form_model = 'player' form_fields = ['raven_7'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) def before_next_page(self): self.player.set_payoff_raven() class Raven8(Page): form_model = 'player' form_fields = ['raven_8'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) def before_next_page(self): self.player.set_payoff_raven() class GenderQn(Page): form_model = 'player' form_fields = ['gender_performance_pref'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] def vars_for_template(self): return shared_vars(self) page_sequence = [ IntroRaven, # Raven1, # Raven2, Raven3, # Raven4, Raven5, Raven6, Raven7, # Raven8, #GenderQn, # IncomeDist, # IncomeDistCertainty, AttentionCheck1, Sociodemographics, FinishedTasks, PayoffandGoodbye, ]