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' 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 } class Screening1(Page): form_model = 'player' form_fields = ['screening1'] class Screening2(Page): form_model = 'player' form_fields = ['screening2'] def before_next_page(self): self.player.check_screening() class Screening3(Page): form_model = 'player' form_fields = ['screening3'] def before_next_page(self): self.player.check_screening() 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'] == 1 page_sequence = [ Validation, Welcome, Screening1, Screening2, Screening3, Introduction1, Introduction2 ]