from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Instructions(Page): pass class Firstphase(Page): pass class Secondphase(Page): pass class Aftersecondphase(Page): form_model = 'player' form_fields = ['somenumber'] class Thirdphase(Page): pass class Amount1: form_model = 'player' form_fields = ['e1'] class Amount2: form_model = 'player' form_fields = ['e2'] class Amount3: form_model = 'player' form_fields = ['e3'] class Amount4: form_model = 'player' form_fields = ['e4'] class Amountrandomlyselected(Page): def vars_for_template(self): p = self.player amount = random.choice(1,2,3,4) z = random.choice(range(1,100)) if p.amount == 1: p.valide = p.e1 if p.amount == 2: p.valide = p.e2 if p.amount == 3: p.valide = p.e3 if p.amount == 4: p.valide = p.e4 return dict( what_is_the_answer_to_choices=self.player.choices, x=p.lottery_outcome, y=p.lottery_outcome + 1.7, ) def before_next_page(self): self.player.payoff = self.player.lottery_outcome class Numberoftasksrandomlyselected(Page): form_model = 'player' form_fields = ['amount'] class Doingtasksornot(Page): def vars_for_template(self): p = self.player if p.z <= p.valide: p.tedioustasks = p.z else: p.tedioustasks = 0 return dict( n = p.tedioustasks, ) class Task(Page): form_model = 'player' form_fields = ['task1'] def before_next_page(self): p = self.player if p.task1 == 19: p.wrong_answers = 0 else: p.wrong_answers = 1 class Resolutionaftertask(Page): form_model = 'player' form_fields = ['wrong_answers'] form_field = ['amount'] def app_after_this_page(self, upcoming_apps): if p.tedioustasks == 1: return upcoming_apps[0] class Task2(Page): form_model = 'player' form_fields = ['task2'] def before_next_page(self): p = self.player if p.task2 == 11: p.wrong_answers2 = 0 else: p.wrong_answers2 = p.wrong_answers + 1 def app_after_this_page(self, upcoming_apps): if p.wrong_answers2 == 2: return upcoming_apps [0] class Resolutionaftertask2(Page): form_model = 'player' form_fields = ['wrong_answers2'] form_fields = ['amount'] def app_after_this_page(self, upcoming_apps): if p.tedioustasks == 2: return upcoming_apps [0] class Task3(Page): form_model = 'player' form_fields - ['task3'] def before_next_page(self): p = self.player if p.task3 == 8: p.wrong_answers3 = 0 else: p.wrong_answers3 = p.wrong_answers2 + 1 def app_after_this_page(self, upcoming_apps): if p.wrong_answers3 == 2: return upcoming_apps [0] class Resolutionaftertask3(Page): form_model = 'player' form_fields = ['wrong_answers3'] form_fields = ['amount'] def app_after_this_page(self, upcoming_apps): if p.tedioustasks == 3: return upcoming_apps [0] class Task4(Page): form_model = 'player' form_fields = ['task4'] def before_next_page(self): p = self.player if p.task3 == 21: p.wrong_answers4 = 0 else: p.wrong_answers4 = p.wrong_answers3 + 1 def app_after_this_page(self, upcoming_apps): if p.wrong_answers4 == 2: return upcoming_apps[0] class Resolutionaftertask4(Page): form_model = 'player' form_fields = ['wrong_answers4'] form_fields = ['task4'] def app_after_this_page(self, upcoming_apps): if p.tedioustasks == 1: return upcoming_apps [0] class Task50(Page): form_model = 'player' form_fields = ['task50'] def before_next_page(self): p = self.player if p.task3 == 16: p.wrong_answers50 = 0 else: p.wrong_answers50 = p.wrong_answers4 + 1 def app_after_this_page(self, upcoming_apps): if p.wrong_answers4 == 2: return upcoming_apps[0] class BadPage(Page): pass class FinalPage(Page): def vars_for_template(self): return dict( total=self.participant.payoff, ) class Theend(Page): pass page_sequence = [ Instructions, Bonus, TheChoice, Results4, FinalPage, FinalQuestion, AfterR ]