from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants from . import models from captcha.fields import ReCaptchaField from django.http import HttpResponse import csv class Validation(Page): _allow_custom_attributes = True form_model = models.Player def get_form(self, data=None, files=None, **kwargs): frm = super().get_form(data, files, **kwargs) frm.fields['captcha'] = ReCaptchaField(label='') return frm class Welcome(Page): form_model = 'player' form_fields = ['consent'] def vars_for_template(self): return { 'base_payment': c(self.session.config['base_payment']), 'lower_exp_payment': Constants.lower_exp_payment, 'upper_exp_payment': Constants.upper_exp_payment, 'average_payment': Constants.average_payment, 'average_time': Constants.average_time, 'max_payment': c(self.session.config['payment_per_point']*Constants.max_questions+self.session.config['payment_belief_elicitation']+self.session.config['base_payment']), } def before_next_page(self): self.player.check_consent() class Screening1(Page): form_model = 'player' form_fields = ['screening1'] def is_displayed(self): return self.participant.vars['consent'] class Screening2(Page): form_model = 'player' form_fields = ['screening2'] def is_displayed(self): return self.participant.vars['consent'] class Screening3(Page): form_model = 'player' form_fields = ['screening3'] def before_next_page(self): self.player.check_screening() def is_displayed(self): return self.participant.vars['consent'] class Introduction1(Page): form_model = 'player' def vars_for_template(self): return { 'average_payment': c(Constants.average_payment) } def is_displayed(self): return self.participant.vars['passed_screening'] == 1 class Introduction2(Page): form_model = 'player' def vars_for_template(self): return { 'num_questions': self.session.vars['num_questions'], 'time_iq': int(round(self.session.config['time_iq']/60)), 'payment_per_point': c(self.session.config['payment_per_point']), 'treatment': self.participant.vars['treatment'] } def is_displayed(self): return self.participant.vars['passed_screening'] and self.participant.vars['consent'] page_sequence = [ # judge, Validation, Welcome, Screening1, # Screening2, Screening3, # Introduction1, Introduction2 ]