from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants def vars_for_all_templates(self): """ get variables from session configs level """ return { 'fee': c(self.session.config['participation_fee']), 'exp_duration': self.session.config['exp_duration'], 'machine_probability': self.session.config['machine_probability'], 'num_questions': Constants.num_rounds, 'max_payment': c(self.session.config['participation_fee'] + self.session.config['prize'] + self.session.config['endowment']), 'max_duration': self.session.config['max_duration'], 'task': self.player.task_identifier, 'round': self.round_number, 'prize': c(self.session.config['prize']), 'endowment': self.session.config['endowment'], 'every_xth_person_paid': self.session.config['every_xth_person_paid'] } class Welcome(Page): def is_displayed(self): return self.round_number == 1 class Consent(Page): def is_displayed(self): return self.round_number == 1 class Instructions(Page): def is_displayed(self): return self.round_number == 1 class Machine(Page): def is_displayed(self): return self.round_number == 1 class Example(Page): def is_displayed(self): return self.round_number == 1 class WaitExample(Page): timeout_seconds = 5 def is_displayed(self): return self.round_number == 1 # class BallsUrnsPrior(Page): # # form_model = models.Player # form_fields = [ # 'prior', # ] class BallsUrns(Page): def is_displayed(self): return self.player.set_type() == 'baseline' form_model = models.Player form_fields = [ 'answer', 'wtp', 'difficulty' ] def before_next_page(self): if self.player.on_paying_round: self.player.set_payoffs() class BallsUrnsSequential(Page): def is_displayed(self): return self.player.set_type() == 'sequential' form_model = models.Player form_fields = [ 'answer', 'wtp', 'difficulty', 'answer2' ] def before_next_page(self): if self.player.on_paying_round: self.player.set_payoffs() class Wait(Page): timeout_seconds = 2 class Goodbye(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): return { 'total_earnings': self.participant.payoff_plus_participation_fee(), 'bonus': c(self.participant.vars['bonus']) } page_sequence = [ Welcome, Consent, Instructions, Machine, Example, WaitExample, BallsUrns, BallsUrnsSequential, Wait, Goodbye, ]