# -*- coding: utf-8 -*- from __future__ import division from otree.common import Currency as c, currency_range from ._builtin import Page, WaitPage from . import models from .models import Constants #todo: replace global vars def vars_for_all_templates(self): return { 'total_rounds': Constants.num_rounds, 'round_number': self.subsession.round_number, } class Welcome(Page): def is_displayed(self): return self.subsession.round_number == 1 # def before_next_page(self): # self.player.set_variables() class Pledge(Page): def is_displayed(self): return self.subsession.round_number == 1 and self.player.participant.vars['pledge'] class Birthday(Page): def is_displayed(self): return self.subsession.round_number == 1 class Phone(Page): def is_displayed(self): return self.subsession.round_number == 2 class Pets(Page): def is_displayed(self): return self.subsession.round_number == 3 class House(Page): def is_displayed(self): return self.subsession.round_number == 4 class Age(Page): def is_displayed(self): return self.subsession.round_number == 5 class Birthyear(Page): def is_displayed(self): return self.subsession.round_number == 6 class Name(Page): def is_displayed(self): return self.subsession.round_number == 7 class Time(Page): def is_displayed(self): return self.subsession.round_number == 8 class Relative(Page): def is_displayed(self): return self.subsession.round_number == 9 class Name2(Page): def is_displayed(self): return self.subsession.round_number == 10 class Answer(Page): form_model = models.Player form_fields = ['answer'] def is_displayed(self): return self.subsession.round_number != Constants.num_rounds def vars_for_template(self): taxtrue = self.player.participant.vars['tax'] return {'taxtrue': taxtrue} def before_next_page(self): self.player.set_roundpay() self.player.set_payoff() class Results(Page): def is_displayed(self): return self.subsession.round_number != Constants.num_rounds def vars_for_template(self): taxtrue = self.player.participant.vars['tax'] return {'taxtrue': taxtrue} class Demographics(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds form_model = models.Player form_fields = ['country', 'age', 'gender', 'career', 'study', 'family', 'children', 'purpose', 'payment_method', 'IBAN', 'BIC', 'transfer_name'] def error_message(self, values): if (values["payment_method"] == False and (values["IBAN"] == '' or values["BIC"] == '' or values['transfer_name'] == '')): return 'If you want to be paid by bank transfer you have to enter your IBAN, BIC and name.' def before_next_page(self): self.player.set_roundpay() self.player.set_payoff() class SumResults(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() paying_round = self.player.participant.vars['round'] total_payoff = sum([p.relevant_roundpay for p in self.player.in_all_rounds()]) return {'player_in_all_rounds': player_in_all_rounds, 'paying_round': paying_round, 'total_payoff': total_payoff} class TrustValue(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds form_model = models.Player form_fields = ['trust', 'advantage', 'claim_benefits', 'fare_evasion', 'stealing', 'tax_evasion', 'bribe'] page_sequence = [Welcome, Pledge, Birthday, Phone, Pets, House, Age, Birthyear, Name, Time, Relative, Name2, Answer, Results, Demographics, SumResults, TrustValue]