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 Coinflipoutcome(Page): def vars_for_template(self): import numpy as np coinflip = [1, 3] weights = [0.99, 0.01] p = self.player p.outcome = np.random.choice(coinflip, p=weights) return dict( o= p.outcome ) class Secondphaseexplain(Page): pass class Secondphase1b(Page): pass class Thirdphase(Page): pass class Thirdphase2(Page): pass class Amount1(Page): form_model = 'player' form_fields = ['e1'] class Amount2(Page): form_model = 'player' form_fields = ['e2'] class Amount3(Page): form_model = 'player' form_fields = ['e3'] class Amount4(Page): form_model = 'player' form_fields = ['e4'] class Amountrandomlyselected(Page): def vars_for_template(self): p = self.player lottery2 = [1, 2, 3, 4] p.amount = random.choice(lottery2) if p.amount == 1: p.effort = p.e1 if p.amount == 2: p.effort = p.e2 if p.amount == 3: p.effort = p.e3 if p.amount == 4: p.effort = p.e4 return dict( z=p.amount, ) class Tasksselected(Page): def vars_for_template(self): p = self.player lottery3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60] p.number = random.choice(lottery3) return dict( n=p.number, ) class Decisionpage(Page): def vars_for_template(self): p = self.player return dict( a= p.amount, b= p.number, c= p.effort ) def app_after_this_page(self, upcoming_apps): p = self.player if p.effort < p.number: self.player.payoff = p.outcome return upcoming_apps[-1] class Task1(Page): form_model = 'player' form_fields = ['task1'] def before_next_page(self): p = self.player if p.task1 == 22: p.wrong_answers = 0 else: p.wrong_answers = 1 class Outcome1(Page): def before_next_page(self): p = self.player if p.number == 1: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 1: return upcoming_apps[-1] class Task2(Page): form_model = 'player' form_fields = ['task2'] def before_next_page(self): p = self.player if p.task2 == 46: p.wrong_answers2 = 0 else: p.wrong_answers2 = p.wrong_answers + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers2 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome2(Page): def before_next_page(self): p = self.player if p.number == 2: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 2: return upcoming_apps[-1] class Task3(Page): form_model = 'player' form_fields = ['task3'] def before_next_page(self): p = self.player if p.task3 == 50: p.wrong_answers3 = 0 else: p.wrong_answers3 = p.wrong_answers2 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers3 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome3(Page): def before_next_page(self): p = self.player if p.number == 3: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 3: return upcoming_apps[-1] class Task4(Page): form_model = 'player' form_fields = ['task4'] def before_next_page(self): p = self.player if p.task4 == 51: p.wrong_answers4 = 0 else: p.wrong_answers4 = p.wrong_answers3 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers4 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome4(Page): def before_next_page(self): p = self.player if p.number == 4: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 4: return upcoming_apps[-1] class Task5(Page): form_model = 'player' form_fields = ['task5'] def before_next_page(self): p = self.player if p.task5 == 51: p.wrong_answers5 = 0 else: p.wrong_answers5 = p.wrong_answers4 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers5 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome5(Page): def before_next_page(self): p = self.player if p.number == 5: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 5: return upcoming_apps[-1] class Task6(Page): form_model = 'player' form_fields = ['task6'] def before_next_page(self): p = self.player if p.task6 == 41: p.wrong_answers6 = 0 else: p.wrong_answers6 = p.wrong_answers5 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers6 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome6(Page): def before_next_page(self): p = self.player if p.number == 6: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 6: return upcoming_apps[-1] class Task7(Page): form_model = 'player' form_fields = ['task7'] def before_next_page(self): p = self.player if p.task7 == 40: p.wrong_answers7 = 0 else: p.wrong_answers7 = p.wrong_answers6 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers7 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome7(Page): def before_next_page(self): p = self.player if p.number == 7: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 7: return upcoming_apps[-1] class Task8(Page): form_model = 'player' form_fields = ['task8'] def before_next_page(self): p = self.player if p.task8 == 47: p.wrong_answers8 = 0 else: p.wrong_answers8 = p.wrong_answers7 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers8 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome8(Page): def before_next_page(self): p = self.player if p.number == 8: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 8: return upcoming_apps[-1] class Task9(Page): form_model = 'player' form_fields = ['task9'] def before_next_page(self): p = self.player if p.task9 == 49: p.wrong_answers9 = 0 else: p.wrong_answers9 = p.wrong_answers8 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers9 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome9(Page): def before_next_page(self): p = self.player if p.number == 9: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 9: return upcoming_apps[-1] class Task10(Page): form_model = 'player' form_fields = ['task10'] def before_next_page(self): p = self.player if p.task10 == 44: p.wrong_answers10 = 0 else: p.wrong_answers10 = p.wrong_answers9 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers10 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome10(Page): def before_next_page(self): p = self.player if p.number == 10: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 10: return upcoming_apps[-1] class Task11(Page): form_model = 'player' form_fields = ['task11'] def before_next_page(self): p = self.player if p.task11 == 41: p.wrong_answers11 = 0 else: p.wrong_answers11 = p.wrong_answers10 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers11 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome11(Page): def before_next_page(self): p = self.player if p.number == 11: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 11: return upcoming_apps[-1] class Task12(Page): form_model = 'player' form_fields = ['task12'] def before_next_page(self): p = self.player if p.task12 == 46: p.wrong_answers12 = 0 else: p.wrong_answers12 = p.wrong_answers11 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers12 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome12(Page): def before_next_page(self): p = self.player if p.number == 12: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 12: self.player.payoff = p.outcome return upcoming_apps[-1] class Task13(Page): form_model = 'player' form_fields = ['task13'] def before_next_page(self): p = self.player if p.task13 == 49: p.wrong_answers13 = 0 else: p.wrong_answers13 = p.wrong_answers12 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers13 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome13(Page): def before_next_page(self): p = self.player if p.number == 13: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 13: return upcoming_apps[-1] class Task14(Page): form_model = 'player' form_fields = ['task14'] def before_next_page(self): p = self.player if p.task14 == 45: p.wrong_answers14 = 0 else: p.wrong_answers14 = p.wrong_answers13 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers14 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome14(Page): def before_next_page(self): p = self.player if p.number == 14: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 14: return upcoming_apps[-1] class Task15(Page): form_model = 'player' form_fields = ['task15'] def before_next_page(self): p = self.player if p.task15 == 42: p.wrong_answers15 = 0 else: p.wrong_answers15 = p.wrong_answers14 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers15 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome15(Page): def before_next_page(self): p = self.player if p.number == 15: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 15: return upcoming_apps[-1] class Task16(Page): form_model = 'player' form_fields = ['task16'] def before_next_page(self): p = self.player if p.task16 == 50: p.wrong_answers16 = 0 else: p.wrong_answers16 = p.wrong_answers15 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers16 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome16(Page): def before_next_page(self): p = self.player if p.number == 16: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 16: return upcoming_apps[-1] class Task17(Page): form_model = 'player' form_fields = ['task17'] def before_next_page(self): p = self.player if p.task17 == 49: p.wrong_answers17 = 0 else: p.wrong_answers17 = p.wrong_answers16 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers17 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome17(Page): def before_next_page(self): p = self.player if p.number == 17: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 17: return upcoming_apps[-1] class Task18(Page): form_model = 'player' form_fields = ['task18'] def before_next_page(self): p = self.player if p.task18 == 43: p.wrong_answers18 = 0 else: p.wrong_answers18 = p.wrong_answers17 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers18 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome18(Page): def before_next_page(self): p = self.player if p.number == 18: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 18: return upcoming_apps[-1] class Task19(Page): form_model = 'player' form_fields = ['task19'] def before_next_page(self): p = self.player if p.task19 == 49: p.wrong_answers19 = 0 else: p.wrong_answers19 = p.wrong_answers18 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers19 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome19(Page): def before_next_page(self): p = self.player if p.number == 19: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 19: return upcoming_apps[-1] class Task20(Page): form_model = 'player' form_fields = ['task20'] def before_next_page(self): p = self.player if p.task20 == 38: p.wrong_answers20 = 0 else: p.wrong_answers20 = p.wrong_answers19 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers20 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome20(Page): def before_next_page(self): p = self.player if p.number == 20: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 20: return upcoming_apps[-1] class Task21(Page): form_model = 'player' form_fields = ['task21'] def before_next_page(self): p = self.player if p.task21 == 34: p.wrong_answers21 = 0 else: p.wrong_answers21 = p.wrong_answers20 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers21 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome21(Page): def before_next_page(self): p = self.player if p.number == 21: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 21: return upcoming_apps[-1] class Task22(Page): form_model = 'player' form_fields = ['task22'] def before_next_page(self): p = self.player if p.task22 == 39: p.wrong_answers22 = 0 else: p.wrong_answers22 = p.wrong_answers21 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers22 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome22(Page): def before_next_page(self): p = self.player if p.number == 22: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 22: return upcoming_apps[-1] class Task23(Page): form_model = 'player' form_fields = ['task23'] def before_next_page(self): p = self.player if p.task23 == 50: p.wrong_answers23 = 0 else: p.wrong_answers23 = p.wrong_answers22 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers23 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome23(Page): def before_next_page(self): p = self.player if p.number == 23: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 23: return upcoming_apps[-1] class Task24(Page): form_model = 'player' form_fields = ['task24'] def before_next_page(self): p = self.player if p.task24 == 40: p.wrong_answers24 = 0 else: p.wrong_answers24 = p.wrong_answers23 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers24 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome24(Page): def before_next_page(self): p = self.player if p.number == 24: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 24: return upcoming_apps[-1] class Task25(Page): form_model = 'player' form_fields = ['task25'] def before_next_page(self): p = self.player if p.task25 == 36: p.wrong_answers25 = 0 else: p.wrong_answers25 = p.wrong_answers24 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers25 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome25(Page): def before_next_page(self): p = self.player if p.number == 25: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 25: return upcoming_apps[-1] class Task26(Page): form_model = 'player' form_fields = ['task26'] def before_next_page(self): p = self.player if p.task26 == 41: p.wrong_answers26 = 0 else: p.wrong_answers26 = p.wrong_answers25 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers26 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome26(Page): def before_next_page(self): p = self.player if p.number == 26: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 26: return upcoming_apps[-1] class Task27(Page): form_model = 'player' form_fields = ['task27'] def before_next_page(self): p = self.player if p.task27 == 43: p.wrong_answers27 = 0 else: p.wrong_answers27 = p.wrong_answers26 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers27 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome27(Page): def before_next_page(self): p = self.player if p.number == 27: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 27: return upcoming_apps[-1] class Task28(Page): form_model = 'player' form_fields = ['task28'] def before_next_page(self): p = self.player if p.task28 == 46: p.wrong_answers28 = 0 else: p.wrong_answers28 = p.wrong_answers27 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers28 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome28(Page): def before_next_page(self): p = self.player if p.number == 28: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 28: return upcoming_apps[-1] class Task29(Page): form_model = 'player' form_fields = ['task29'] def before_next_page(self): p = self.player if p.task29 == 53: p.wrong_answers29 = 0 else: p.wrong_answers29 = p.wrong_answers28 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers29 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome29(Page): def before_next_page(self): p = self.player if p.number == 29: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 29: return upcoming_apps[-1] class Task30(Page): form_model = 'player' form_fields = ['task30'] def before_next_page(self): p = self.player if p.task30 == 39: p.wrong_answers30 = 0 else: p.wrong_answers30 = p.wrong_answers29 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers30 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome30(Page): def before_next_page(self): p = self.player if p.number == 30: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 30: return upcoming_apps[-1] class Task31(Page): form_model = 'player' form_fields = ['task31'] def before_next_page(self): p = self.player if p.task31 == 45: p.wrong_answers31 = 0 else: p.wrong_answers31 = p.wrong_answers30 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers31 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome31(Page): def before_next_page(self): p = self.player if p.number == 31: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 31: return upcoming_apps[-1] class Task32(Page): form_model = 'player' form_fields = ['task32'] def before_next_page(self): p = self.player if p.task32 == 42: p.wrong_answers32 = 0 else: p.wrong_answers32 = p.wrong_answers31 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers32 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome32(Page): def before_next_page(self): p = self.player if p.number == 32: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 32: return upcoming_apps[-1] class Task33(Page): form_model = 'player' form_fields = ['task33'] def before_next_page(self): p = self.player if p.task33 == 47: p.wrong_answers33 = 0 else: p.wrong_answers33 = p.wrong_answers32 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers33 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome33(Page): def before_next_page(self): p = self.player if p.number == 33: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 33: return upcoming_apps[-1] class Task34(Page): form_model = 'player' form_fields = ['task34'] def before_next_page(self): p = self.player if p.task34 == 47: p.wrong_answers34 = 0 else: p.wrong_answers34 = p.wrong_answers33 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers34 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome34(Page): def before_next_page(self): p = self.player if p.number == 34: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 34: return upcoming_apps[-1] class Task35(Page): form_model = 'player' form_fields = ['task35'] def before_next_page(self): p = self.player if p.task35 == 49: p.wrong_answers35 = 0 else: p.wrong_answers35 = p.wrong_answers34 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers35 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome35(Page): def before_next_page(self): p = self.player if p.number == 35: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 35: return upcoming_apps[-1] class Task36(Page): form_model = 'player' form_fields = ['task36'] def before_next_page(self): p = self.player if p.task36 == 47: p.wrong_answers36 = 0 else: p.wrong_answers36 = p.wrong_answers35 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers36 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome36(Page): def before_next_page(self): p = self.player if p.number == 36: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 36: return upcoming_apps[-1] class Task37(Page): form_model = 'player' form_fields = ['task37'] def before_next_page(self): p = self.player if p.task37 == 34: p.wrong_answers37 = 0 else: p.wrong_answers37 = p.wrong_answers36 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers37 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome37(Page): def before_next_page(self): p = self.player if p.number == 37: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 37: return upcoming_apps[-1] class Task38(Page): form_model = 'player' form_fields = ['task38'] def before_next_page(self): p = self.player if p.task38 == 39: p.wrong_answers38 = 0 else: p.wrong_answers38 = p.wrong_answers37 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers38 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome38(Page): def before_next_page(self): p = self.player if p.number == 38: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 38: return upcoming_apps[-1] class Task39(Page): form_model = 'player' form_fields = ['task39'] def before_next_page(self): p = self.player if p.task39 == 44: p.wrong_answers39 = 0 else: p.wrong_answers39 = p.wrong_answers38 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers39 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome39(Page): def before_next_page(self): p = self.player if p.number == 39: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 39: return upcoming_apps[-1] class Task40(Page): form_model = 'player' form_fields = ['task40'] def before_next_page(self): p = self.player if p.task40 == 41: p.wrong_answers40 = 0 else: p.wrong_answers40 = p.wrong_answers39 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers40 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome40(Page): def before_next_page(self): p = self.player if p.number == 40: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 40: return upcoming_apps[-1] class Task41(Page): form_model = 'player' form_fields = ['task41'] def before_next_page(self): p = self.player if p.task41 == 39: p.wrong_answers41 = 0 else: p.wrong_answers41 = p.wrong_answers40 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers41 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome41(Page): def before_next_page(self): p = self.player if p.number == 41: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 41: return upcoming_apps[-1] class Task42(Page): form_model = 'player' form_fields = ['task42'] def before_next_page(self): p = self.player if p.task42 == 48: p.wrong_answers42 = 0 else: p.wrong_answers42 = p.wrong_answers41 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers42 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome42(Page): def before_next_page(self): p = self.player if p.number == 42: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 42: return upcoming_apps[-1] class Task43(Page): form_model = 'player' form_fields = ['task43'] def before_next_page(self): p = self.player if p.task43 == 46: p.wrong_answers43 = 0 else: p.wrong_answers43 = p.wrong_answers42 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers43 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome43(Page): def before_next_page(self): p = self.player if p.number == 43: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 43: return upcoming_apps[-1] class Task44(Page): form_model = 'player' form_fields = ['task44'] def before_next_page(self): p = self.player if p.task44 == 42: p.wrong_answers44 = 0 else: p.wrong_answers44 = p.wrong_answers43 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers44 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome44(Page): def before_next_page(self): p = self.player if p.number == 44: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 44: return upcoming_apps[-1] class Task45(Page): form_model = 'player' form_fields = ['task45'] def before_next_page(self): p = self.player if p.task45 == 40: p.wrong_answers45 = 0 else: p.wrong_answers45 = p.wrong_answers44 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers45 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome45(Page): def before_next_page(self): p = self.player if p.number == 45: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 45: return upcoming_apps[-1] class Task46(Page): form_model = 'player' form_fields = ['task46'] def before_next_page(self): p = self.player if p.task46 == 50: p.wrong_answers46 = 0 else: p.wrong_answers46 = p.wrong_answers45 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers46 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome46(Page): def before_next_page(self): p = self.player if p.number == 46: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 46: return upcoming_apps[-1] class Task47(Page): form_model = 'player' form_fields = ['task47'] def before_next_page(self): p = self.player if p.task47 == 40: p.wrong_answers47 = 0 else: p.wrong_answers47 = p.wrong_answers46 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers47 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome47(Page): def before_next_page(self): p = self.player if p.number == 47: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 47: return upcoming_apps[-1] class Task48(Page): form_model = 'player' form_fields = ['task48'] def before_next_page(self): p = self.player if p.task48 == 41: p.wrong_answers48 = 0 else: p.wrong_answers48 = p.wrong_answers47 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers48 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome48(Page): def before_next_page(self): p = self.player if p.number == 48: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 48: return upcoming_apps[-1] class Task49(Page): form_model = 'player' form_fields = ['task49'] def before_next_page(self): p = self.player if p.task49 == 40: p.wrong_answers49 = 0 else: p.wrong_answers49 = p.wrong_answers48 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers49 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome49(Page): def before_next_page(self): p = self.player if p.number == 49: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 49: return upcoming_apps[-1] class Task50(Page): form_model = 'player' form_fields = ['task50'] def before_next_page(self): p = self.player if p.task50 == 44: p.wrong_answers50 = 0 else: p.wrong_answers50 = p.wrong_answers49 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers50 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome50(Page): def before_next_page(self): p = self.player if p.number == 50: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 50: return upcoming_apps[-1] class Task51(Page): form_model = 'player' form_fields = ['task51'] def before_next_page(self): p = self.player if p.task51 == 56: p.wrong_answers51 = 0 else: p.wrong_answers51 = p.wrong_answers50 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers51 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome51(Page): def before_next_page(self): p = self.player if p.number == 51: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 51: return upcoming_apps[-1] class Task52(Page): form_model = 'player' form_fields = ['task52'] def before_next_page(self): p = self.player if p.task52 == 39: p.wrong_answers52 = 0 else: p.wrong_answers52 = p.wrong_answers51 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers52 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome52(Page): def before_next_page(self): p = self.player if p.number == 52: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 52: return upcoming_apps[-1] class Task53(Page): form_model = 'player' form_fields = ['task53'] def before_next_page(self): p = self.player if p.task53 == 34: p.wrong_answers53 = 0 else: p.wrong_answers53 = p.wrong_answers52 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers53 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome53(Page): def before_next_page(self): p = self.player if p.number == 53: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 53: return upcoming_apps[-1] class Task54(Page): form_model = 'player' form_fields = ['task54'] def before_next_page(self): p = self.player if p.task54 == 46: p.wrong_answers54 = 0 else: p.wrong_answers54 = p.wrong_answers53 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers54 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome54(Page): def before_next_page(self): p = self.player if p.number == 54: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 54: return upcoming_apps[-1] class Task55(Page): form_model = 'player' form_fields = ['task55'] def before_next_page(self): p = self.player if p.task55 == 47: p.wrong_answers55 = 0 else: p.wrong_answers55 = p.wrong_answers54 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers55 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome55(Page): def before_next_page(self): p = self.player if p.number == 55: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 55: return upcoming_apps[-1] class Task56(Page): form_model = 'player' form_fields = ['task56'] def before_next_page(self): p = self.player if p.task56 == 39: p.wrong_answers56 = 0 else: p.wrong_answers56 = p.wrong_answers55 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers56 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome56(Page): def before_next_page(self): p = self.player if p.number == 56: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 56: return upcoming_apps[-1] class Task57(Page): form_model = 'player' form_fields = ['task57'] def before_next_page(self): p = self.player if p.task57 == 43: p.wrong_answers57 = 0 else: p.wrong_answers57 = p.wrong_answers56 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers57 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome57(Page): def before_next_page(self): p = self.player if p.number == 57: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number ==57: return upcoming_apps[-1] class Task58(Page): form_model = 'player' form_fields = ['task58'] def before_next_page(self): p = self.player if p.task58 == 46: p.wrong_answers58 = 0 else: p.wrong_answers58 = p.wrong_answers57 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers58 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome58(Page): def before_next_page(self): p = self.player if p.number == 58: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 58: return upcoming_apps[-1] class Task59(Page): form_model = 'player' form_fields = ['task59'] def before_next_page(self): p = self.player if p.task59 == 36: p.wrong_answers59 = 0 else: p.wrong_answers59 = p.wrong_answers58 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers59 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome59(Page): def before_next_page(self): p = self.player if p.number == 59: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 59: return upcoming_apps[-1] class Task60(Page): form_model = 'player' form_fields = ['task60'] def before_next_page(self): p = self.player if p.task60 == 33: p.wrong_answers60 = 0 else: p.wrong_answers60 = p.wrong_answers59 + 1 def app_after_this_page(self, upcoming_apps): p = self.player if p.wrong_answers60 == 2: self.player.payoff = p.outcome return upcoming_apps[0] class Outcome60(Page): def before_next_page(self): p = self.player if p.number == 60: self.player.payoff = p.amount + p.outcome def app_after_this_page(self, upcoming_apps): p = self.player if p.number == 60: return upcoming_apps[-1] page_sequence= [ Instructions, Firstphase, Coinflipoutcome, Secondphaseexplain, Secondphase1b, Thirdphase, Thirdphase2, Amount1, Amount2, Amount3, Amount4, Amountrandomlyselected, Tasksselected, Decisionpage, Task1, Outcome1, Task2, Outcome2, Task3, Outcome3, Task4, Outcome4, Task5, Outcome5, Task6, Outcome6, Task7, Outcome7, Task8, Outcome8, Task9, Outcome9, Task10, Outcome10, Task11, Outcome11, Task12, Outcome12, Task13, Outcome13, Task14, Outcome14, Task15, Outcome15, Task16, Outcome16, Task17, Outcome17, Task18, Outcome18, Task19, Outcome19, Task20, Outcome20, Task21, Outcome21, Task22, Outcome22, Task23, Outcome23, Task24, Outcome24, Task25, Outcome25, Task26, Outcome26, Task27, Outcome27, Task28, Outcome28, Task29, Outcome29, Task30, Outcome30, Task31, Outcome31, Task32, Outcome32, Task33, Outcome33, Task34, Outcome34, Task35, Outcome35, Task36, Outcome36, Task37, Outcome37, Task38, Outcome38, Task39, Outcome39, Task40, Outcome40, Task41, Outcome41, Task42, Outcome42, Task43, Outcome43, Task44, Outcome44, Task45, Outcome45, Task46, Outcome46, Task47, Outcome47, Task48, Outcome48, Task49, Outcome49, Task50, Outcome50, Task51, Outcome51, Task52, Outcome52, Task53, Outcome53, Task54, Outcome54, Task55, Outcome55, Task56, Outcome56, Task57, Outcome57, Task58, Outcome58, Task59, Outcome59, Task60, Outcome60, ]