from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Home(Page): pass class A_Level(Page): form_model = 'player' form_fields = ['level', 'field'] def error_message(self,values): if values["level"] == 2: return 'Sorry. At this time, only the section "novice" works. Please \ check back another time.' class B_Data(Page): form_model = 'player' form_fields = ['data', 'startover'] def error_message(self,values): if values['startover'] == 0 and values["data"] == None: return 'Please select an option' if values['startover'] == 0 and values["data"] in [2,3,4]: return 'Sorry. At this time, only the section "cross-section" \ works. Please check back another time or choose another option.' class C_DepNum(Page): form_model = 'player' form_fields = ['depnum', 'startover'] def error_message(self,values): if values['startover'] == 0 and values["depnum"] == None: return 'Please select an option' if values['startover'] == 0 and values["depnum"] == 2: return 'Sorry. At this time, only the section with "one" dependent \ variable works. Please check back another time or choose another option.' def is_displayed(self): return self.player.startover==False class D_DepType(Page): form_model = 'player' form_fields = ['deptype', 'startover'] def error_message(self,values): if values['startover'] == 0 and values["deptype"] == None: return 'Please select an option' if values['startover'] == 0 and values["deptype"] in [4,5]: return 'Sorry. At this time, this section is not yet developed. \ Please check back another time or choose another option.' def is_displayed(self): return self.player.startover==False class Thanks(Page): def is_displayed(self): return self.player.startover==False ############################################################################# # Pages for models ############################################################################# # Novice, cross, 1, binary class R_A1B1C1D1(Page): form_model = 'player' form_fields = ['feedscale', 'feedtext', 'startover'] def is_displayed(self): if self.player.startover==False and \ self.player.level==1 and \ self.player.data==1 and \ self.player.depnum==1 and \ self.player.deptype==1: return True # Novice, cross, 1, categorical class R_A1B1C1D2(Page): form_model = 'player' form_fields = ['feedscale', 'feedtext', 'startover'] def is_displayed(self): if self.player.startover==False and \ self.player.level==1 and \ self.player.data==1 and \ self.player.depnum==1 and \ self.player.deptype==2: return True # Novice, cross, 1, ordinal class R_A1B1C1D3(Page): form_model = 'player' form_fields = ['feedscale', 'feedtext', 'startover'] def is_displayed(self): if self.player.startover==False and \ self.player.level==1 and \ self.player.data==1 and \ self.player.depnum==1 and \ self.player.deptype==3: return True # Novice, cross, 1, ordinal class R_A1B1C1D3(Page): form_model = 'player' form_fields = ['feedscale', 'feedtext', 'startover'] def is_displayed(self): if self.player.startover==False and \ self.player.level==1 and \ self.player.data==1 and \ self.player.depnum==1 and \ self.player.deptype==3: return True # Novice, cross, 1, ordinal class R_A1B1C1D3(Page): form_model = 'player' form_fields = ['feedscale', 'feedtext', 'startover'] def is_displayed(self): if self.player.startover==False and \ self.player.level==1 and \ self.player.data==1 and \ self.player.depnum==1 and \ self.player.deptype==3: return True page_sequence = [ Home, A_Level, B_Data, C_DepNum, D_DepType, R_A1B1C1D2, R_A1B1C1D1, R_A1B1C1D3, Thanks ]