from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants import random import json class Bienvenue(Page): pass class Concepts0(Page): pass class Concepts1(Page): form_model = 'player' form_fields = ['prob1'] pass class Concepts2(Page): def is_displayed(self): return self.player.prob1 != 30 pass class Concepts3(Page): form_model = 'player' form_fields = ['prob2'] pass class Concepts4(Page): def is_displayed(self): return self.player.prob2 != 10 pass class Concepts5(Page): form_model = 'player' form_fields = ['mob', 'autonomie', 'activite', 'gene', 'anxiete'] pass class Finconcepts(Page): pass class U12(Page): form_model = 'player' form_fields = ['su12'] pass class WTP(Page): form_model = 'player' form_fields = ['wtp'] pass class WTP2(Page): def is_displayed(self): return self.player.wtp == 'Oui' form_model = 'player' form_fields = ['slide'] pass class RA(Page): form_model = 'player' form_fields = ['ra1', 'ra2', 'ra3', 'ra4', 'ra5', 'ra6', 'ra7', 'ra8', 'ra9', 'ra10'] pass class PT(Page): form_model = 'player' form_fields = [ 'pt1','pt2','pt3','pt4','pt5','pt6','pt7','pt8','pt9','pt10','pt11','pt12','pt13', 'pt14','pt15','pt16','pt17','pt18','pt19','pt20','pt21','pt22','pt23','pt24', 'pt25','pt26','pt27','pt28','pt29','pt30','pt30' ] pass class Essai_WTP(Page): form_model = 'player' form_fields = ['wtp1','slide'] pass class Essai_assu2(Page): form_model = 'player' form_fields = ['treatment','assu'] pass class Qu1(Page): form_model = 'player' form_fields = ['homme'] pass class Qu2(Page): form_model = 'player' form_fields = ['Année', 'Mois'] pass class Qu3(Page): form_model = 'player' form_fields = ['etatsante'] pass class Qu4(Page): form_model = 'player' form_fields = ['mlchr'] pass class Qu5(Page): form_model = 'player' form_fields = ['limite'] pass class Qu6(Page): form_model = 'player' form_fields = ['lunette'] pass class Qu7(Page): form_model = 'player' form_fields = ['prothese'] pass class Qu8(Page): form_model = 'player' form_fields = ['hospi'] pass class Qu9(Page): form_model = 'player' form_fields = ['medge', 'nbmedge'] pass class Qu9bis(Page): form_model = 'player' form_fields = ['ophtalmo', 'nbophtalmo'] pass class Qu10(Page): def is_displayed(self): return self.player.homme== 1 form_model = 'player' form_fields = ['speh', 'nbspeh'] pass class Qu10bis(Page): def is_displayed(self): return self.player.homme== 0 form_model = 'player' form_fields = ['spef', 'nbspef'] pass class Qu11(Page): form_model = 'player' form_fields = ['dent', 'nbdent'] pass class Qu12(Page): def is_displayed(self): return self.player.homme== 0 form_model = 'player' form_fields = ['gyn','nbgyn'] pass class Qu13(Page): form_model = 'player' form_fields = ['secu'] pass class Qu14(Page): form_model = 'player' form_fields = ['cmu'] pass class Qu15(Page): form_model = 'player' form_fields = ['cs'] pass class Qu16(Page): def is_displayed(self): return self.player.cs != 6 and self.player.cs != 7 #ça marche même si ça me surprend form_model = 'player' form_fields = ['acs'] pass class Qu17(Page): form_model = 'player' form_fields = ['cohab'] pass class Qu18(Page): form_model = 'player' form_fields = ['psemble'] pass class Qu18bis(Page): form_model = 'player' form_fields = ['fratr','nbfratr','nbquasi'] pass class Qu19(Page): def is_displayed(self): return self.player.psemble== 1 form_model = 'player' form_fields = ['revpar'] pass class Qu19bis(Page): def is_displayed(self): return self.player.psemble== 2 or self.player.psemble== 4 form_model = 'player' form_fields = ['revpere'] pass class Qu19ter(Page): def is_displayed(self): return self.player.psemble== 2 or self.player.psemble== 3 form_model = 'player' form_fields = ['revmere'] pass class Qu20(Page): def is_displayed(self): return self.player.psemble== 1 form_model = 'player' form_fields = ['avispar'] pass class Qu20bis(Page): def is_displayed(self): return self.player.psemble== 2 or self.player.psemble== 4 form_model = 'player' form_fields = ['avispere'] pass class Qu20ter(Page): def is_displayed(self): return self.player.psemble== 2 or self.player.psemble== 3 form_model = 'player' form_fields = ['avismere'] pass class Qu21(Page): form_model = 'player' form_fields = ['ressfam','resspart','ressaidepub','resspret','ressjob','ressep','ressautre'] pass class Qu22(Page): form_model = 'player' form_fields = ['taille','poids'] pass class Qu23(Page): form_model = 'player' form_fields = ['fume'] pass class Qu23bis(Page): def is_displayed(self): return self.player.fume== 2 or self.player.fume== 3 form_model = 'player' form_fields = ['fumepast'] pass class Qu23ter(Page): def is_displayed(self): return self.player.fume== 2 or self.player.fume== 3 or self.player.fumepast==1 form_model = 'player' form_fields = ['nbcig','nbcigar'] pass class Qu24(Page): form_model = 'player' form_fields = ['freqalc'] pass class Qu25(Page): def is_displayed(self): return self.player.freqalc!=1 form_model = 'player' form_fields = ['consoalc'] pass class Qu26(Page): def is_displayed(self): return self.player.freqalc!=1 form_model = 'player' form_fields = ['apialc'] pass class Qu27(Page): form_model = 'player' form_fields = ['u12subj'] pass class Qu28(Page): form_model = 'player' form_fields = ['diplo', 'disci'] pass class Fin(Page): pass start_pages = [ Bienvenue, Concepts0, Concepts1, Concepts2, Concepts3, Concepts4, Concepts5, Finconcepts, ] end_pages = [ Essai_assu2, Qu1, Qu2, Qu3, Qu4, Qu5, Qu6, Qu7, Qu8, Qu9, Qu9bis, Qu10, Qu10bis, Qu11, Qu12, Qu13, Qu14, Qu15, Qu16, Qu17, Qu18, Qu18bis, Qu19, Qu19bis, Qu19ter, Qu20, Qu20bis, Qu20ter, Qu21, Qu22, Qu23, Qu23bis, Qu23ter, Qu24, Qu25, Qu26, Qu27, Qu28, Fin ] initial_page_sequence = [ Essai_WTP, RA, U12, PT, ] page_sequence = [ ] class MyPage(Page): def inner_dispatch(self): page_seq = int(self.__class__.__name__.split('_')[1]) page_to_show = json.loads(self.player.page_sequence)[page_seq] self._is_frozen = False self.__class__ = globals()[page_to_show] return super(globals()[page_to_show], self).inner_dispatch() for i, _ in enumerate(initial_page_sequence): NewClassName = "Page_{}".format(i) A = type(NewClassName, (MyPage,), {}) locals()[NewClassName] = A page_sequence.append(locals()[NewClassName]) page_sequence = start_pages + page_sequence + end_pages