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'], # '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(6 * self.session.config['fixed_round_bonus']), } class Sociodemographics(Page): form_model = models.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, } 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] } class IntroRaven(Page): def is_displayed(self): return not self.participant.vars['failed_comprehension'] class AttentionCheck1(Page): form_model = 'player' form_fields = ['attention_check'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven1(Page): form_model = 'player' form_fields = ['raven_1'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven2(Page): form_model = 'player' form_fields = ['raven_2'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven3(Page): form_model = 'player' form_fields = ['raven_3'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven4(Page): form_model = 'player' form_fields = ['raven_4'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven5(Page): form_model = 'player' form_fields = ['raven_5'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven6(Page): form_model = 'player' form_fields = ['raven_6'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven7(Page): form_model = 'player' form_fields = ['raven_7'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] class Raven8(Page): form_model = 'player' form_fields = ['raven_8'] def is_displayed(self): return not self.participant.vars['failed_comprehension'] 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'] # class Sociodemographics_de(Page): # form_model = models.Player # form_fields = ['age', 'gender', 'education', 'study_field'] # # # class FreeForm_de(Page): # form_model = models.Player # form_fields = ['how_comprehensible', 'free_form'] # class FinishedTasks_de(Page): # def before_next_page(self): # self.player.set_payoff() # # class PayoffandGoodbye_de(Page): # def vars_for_template(self): # return { # 'payoff_for_guess': self.player.payoff, # # 'get_paid': self.player.get_paid, # 'total_earnings': c(self.player.total_payoff), # } # # def post(self): # # testing # # return HttpResponseRedirect('https://www.google.com/search?q=' + str(round(self.player.total_payoff, ndigits=2))) # # experiment at Harvard decision lab: SONA study number 513 # return HttpResponseRedirect('https://dashboard.harvarddecisionlab.org/link-receipt/?id=513&payment=' + str(round(self.player.total_payoff, ndigits=2))) page_sequence = [ Sociodemographics, AttentionCheck1, IntroRaven, Raven1, Raven2, Raven3, Raven4, Raven5, Raven6, Raven7, Raven8, GenderQn, # IncomeDist, # IncomeDistCertainty, FinishedTasks, PayoffandGoodbye, ]