from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Introduction(Page): pass class Example(Page): form_model = 'player' form_fields = ['practice_question1', 'practice_question2'] class QuizCheck(Page): form_model = 'player' form_fields = ['practice_question1', 'practice_question2'] def is_displayed(self): return self.player.practice_question1 != 13 or self.player.practice_question2 != 30 class SendEmployee1(Page): form_model = 'group' form_fields = ['sent_amount1'] def is_displayed(self): return self.player.role() == 'Employee1' class SendEmployee2(Page): form_model = 'group' form_fields = ['sent_amount2'] def is_displayed(self): return self.player.role() == 'Employee2' class SendEmployee3(Page): form_model = 'group' form_fields = ['sent_amount3'] def is_displayed(self): return self.player.role() == 'Employee3' class WaitForSender(WaitPage): pass class SendBack(Page): form_model = 'group' form_fields = ['sent_back_amount1', 'sent_back_amount2', 'sent_back_amount3'] def vars_for_template(self): return { 'tripled_amount1': self.group.sent_amount1 * Constants.multiplier, 'tripled_amount2': self.group.sent_amount2 * Constants.multiplier, 'tripled_amount3': self.group.sent_amount3 * Constants.multiplier } def sent_back_amount_choices(self): return currency_range( c(0), self.group.sent_amount * Constants.multiplier, c(1) ) def is_displayed(self): return self.player.role() == 'Leader' class ResultsWaitPage(WaitPage): pass class Results(Page): pass page_sequence = [ Introduction, Example, QuizCheck, SendEmployee1, SendEmployee2, SendEmployee3, WaitForSender, SendBack, ResultsWaitPage, Results, ]