from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random import json import itertools author = 'D. Mignon' doc = """ Experiment with risk aversion, correlation aversion measures and a tak of health insurance and treatment decision """ class Constants(BaseConstants): name_in_url = 'essai_05_02' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def creating_session(self): from .pages import initial_page_sequence aaa = [i.__name__.split('_') for i in initial_page_sequence] page_blocks = [list(group) for key, group in itertools.groupby(aaa, key=lambda x: x[0])] for p in self.get_players(): pb = page_blocks.copy() random.shuffle(pb) level1 = list(itertools.chain.from_iterable(pb)) level2 = ['_'.join(i) for i in level1] p.page_sequence = json.dumps(level2) pass class Group(BaseGroup): pass class Player(BasePlayer): def random_start(): return random.randint(0, 1000) def random_start1(): return random.randint(0, 200) def random_start2(): return random.randint(0, 200) page_sequence = models.StringField() prob1 = models.IntegerField( label="", choices=[ [10, '10 %'], [20, '20 %'], [30, '30 %'], [100, '100 %'], ], widget=widgets.RadioSelect ) prob2 = models.FloatField( label="", choices=[ [1, '1 %'], [10, '10 %'], [0.1, '0,1 %'], [100, '100 %'], ], widget=widgets.RadioSelect ) mob = models.IntegerField( label="", choices=[ [1, 'Je n\'ai aucun problème pour me déplacer à pied'], [2, 'J\'ai quelques problèmes pour me déplacer à pied'], [3, 'J\'ai des problèmes modérés pour me déplacer à pied'], [4, 'J\'ai des problèmes sévères pour me déplacer à pied'], [5, 'Je suis obligé(e) de rester alité(e)'] ], widget=widgets.RadioSelect ) autonomie = models.IntegerField( label="", choices=[ [1, 'Je n\'ai aucun problème pour me laver ou m\'habiller tout(e) seul(e)'], [2, 'J\'ai quelques problèmes pour me laver ou m\'habiller tout(e) seul(e)'], [3, 'J\'ai des problèmes modérés me laver ou m\'habiller tout(e) seul(e)'], [4, 'J\'ai des problèmes sévères pour me laver ou m\'habiller tout(e) seul(e)'], [5, 'Je suis incapable de me laver ou de m\'habiller tout(e) seul(e)'] ], widget=widgets.RadioSelect ) activite = models.IntegerField( label="", choices=[ [1, 'Je n\'ai aucun problème pour accomplir mes activités courantes'], [2, 'J\'ai quelques problèmes pour accomplir mes activités courantes'], [3, 'J\'ai des problèmes modérés pour accomplir mes activités courantes'], [4, 'J\'ai des problèmes sévères pour accomplir mes activités courantes'], [5, 'Je suis incapable d\'accomplir mes activités courantes'] ], widget=widgets.RadioSelect ) gene = models.IntegerField( label="", choices=[ [1, 'Je n\'ai ni douleur ni gêne'], [2, 'J\'ai des douleurs ou une gêne léger(ères)'], [3, 'J\'ai des douleurs ou une gêne modérée(s)'], [4, 'J\'ai des douleurs ou une gêne sévère(s)'], [5, 'J\'ai des douleurs ou une gêne extrême(s)'] ], widget=widgets.RadioSelect ) anxiete = models.IntegerField( label="", choices=[ [1, 'Je ne suis ni anxieux(se) ni déprimé(e)'], [2, 'Je suis légèrement anxieux(se) ou déprimé(e)'], [3, 'Je suis modérément anxieux(se) ou déprimé(e)'], [4, 'Je suis sévèrement anxieux(se) ou déprimé(e)'], [5, 'Je suis extrêmement anxieux(se) ou déprimé(e)'] ], widget=widgets.RadioSelect ) wtp = models.StringField( label="", choices=['Oui','Non'], widget=widgets.RadioSelect ) wtp1 = models.StringField() slide = models.IntegerField( label= "", min=0, max=1000, default= random_start, widget=widgets.Slider(attrs={'step': '10'}), blank=True ) ra1 = models.StringField() ra2 = models.StringField() ra3 = models.StringField() ra4 = models.StringField() ra5 = models.StringField() ra6 = models.StringField() ra7 = models.StringField() ra8 = models.StringField() ra9 = models.StringField() ra10 = models.StringField() su12 = models.IntegerField() treatment = models.StringField() assu = models.StringField() homme = models.IntegerField( label='', choices=[ [1, 'Un homme'], [0, 'Une femme'], ], widget = widgets.RadioSelect, ) pt1 = models.StringField() pt2 = models.StringField(blank=True) pt3 = models.StringField(blank=True) pt4 = models.StringField(blank=True) pt5 = models.StringField(blank=True) pt6 = models.StringField(blank=True) pt7 = models.StringField(blank=True) pt8 = models.StringField(blank=True) pt9 = models.StringField(blank=True) pt10 = models.StringField(blank=True) pt11 = models.StringField(blank=True) pt12 = models.StringField(blank=True) pt13 = models.StringField(blank=True) pt14 = models.StringField(blank=True) pt15 = models.StringField(blank=True) pt16 = models.StringField(blank=True) pt17 = models.StringField(blank=True) pt18 = models.StringField(blank=True) pt19 = models.StringField(blank=True) pt20 = models.StringField(blank=True) pt21 = models.StringField(blank=True) pt22 = models.StringField(blank=True) pt23 = models.StringField(blank=True) pt24 = models.StringField(blank=True) pt25 = models.StringField(blank=True) pt25 = models.StringField(blank=True) pt26 = models.StringField(blank=True) pt27 = models.StringField(blank=True) pt28 = models.StringField(blank=True) pt29 = models.StringField(blank=True) pt30 = models.StringField(blank=True) pt31 = models.StringField(blank=True) Année = models.IntegerField( min=1950, max= 2015 ) Mois = models.IntegerField( choices=[ [1, 'Janvier'], [2, 'Février'], [3, 'Mars'], [4, 'Avril'], [5, 'Mai'], [6, 'Juin'], [7, 'Juillet'], [8, 'Août'], [9, 'Septembre'], [10, 'Octobre'], [11, 'Novembre'], [12, 'Décembre'], ] ) etatsante = models.IntegerField( label='', choices=[ [1, 'Très mauvais'], [2, 'Mauvais'], [3, 'Assez bon'], [4, 'Bon'], [5, 'Très bon'], ], widget = widgets.RadioSelect, ) mlchr = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], [3, 'Vous ne savez pas'], ], widget = widgets.RadioSelect, ) limite = models.IntegerField( label='', choices=[ [1, 'Oui, fortement limité'], [2, 'Oui, limité mais pas fortement'], [3, 'Non, pas limité du tout'], ], widget = widgets.RadioSelect, ) lunette = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], ], widget=widgets.RadioSelect, ) prothese = models.IntegerField( label='', choices=[ [1, 'Oui, une couronne, un bridge, un implant dentaire'], [2, 'Non'], ], widget=widgets.RadioSelect, ) hospi = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], ], widget=widgets.RadioSelect, ) medge = models.StringField() nbmedge = models.StringField(blank=True) ophtalmo = models.StringField() nbophtalmo = models.StringField(blank=True) speh = models.StringField() nbspeh = models.StringField(blank=True) spef = models.StringField() nbspef = models.StringField(blank=True) dent = models.StringField() nbdent = models.StringField(blank=True) gyn = models.StringField() nbgyn = models.StringField(blank=True) secu = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], [3, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) cmu = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], [3, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) cs = models.IntegerField( label='', choices=[ [1, 'Oui, une complémentaire santé étudiante'], [2, 'Oui, la complémentaire santé de vos parents ou de l\'un d\'entre eux'], [3, 'Oui, la complémentaire santé de votre conjoint'], [4, 'Oui, la complémentaire santé obtenue par l\'intermédiaire de votre entreprise, de votre administration'], [5, 'Oui, une autre complémentaire santé'], [6, 'Non'], [7, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) acs = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], [3, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) cohab = models.IntegerField( label='', choices=[ [1, 'Chez vos deux parents'], [2, 'Chez votre mère'], [3, 'Chez votre père'], [4, 'Dans un logement indépendant en location ou en colocation'], [5, 'Dans un logement indépendant dont vous êtes propriétaire'], [6, 'Dans un logement indépendant à titre gracieux'], [7, 'En résidence collective (foyer, internat, résidence universitaire)'], [8, 'Autre'], ], widget=widgets.RadioSelect, ) psemble = models.IntegerField( label='', choices=[ [1,'Oui et ils vivent ensemble'], [2, 'Oui et ils sont séparés'], [3, 'Non, votre père est décédé ou inconnu'], [4, 'Non, votre mère est décédée ou inconnue'], [5, 'Non, vos parents sont décédés ou inconnus'], ], widget = widgets.RadioSelect, ) fratr = models.IntegerField() nbfratr = models.IntegerField( label='', min=0, max=10, blank=True ) nbquasi = models.IntegerField( label='', min=0, max=10, blank=True ) revpar = models.IntegerField( label='', choices=[ [1,'Moins de 500€'], [2, 'De 500€ à moins de 1000€'], [3, 'De 1000€ à moins de 1500€'], [4, 'De 1500€ à moins de 2000€'], [5, 'De 2000€ à moins de 2500€'], [6, 'De 3000€ à moins de 5000€'], [7, 'De 5000€ à moins de 8000€'], [8, '8000€ ou plus'], [9, 'Vous ne savez pas'] ], widget = widgets.RadioSelect, ) revpere = models.IntegerField( label='', choices=[ [1, 'Moins de 500€'], [2, 'De 500€ à moins de 1000€'], [3, 'De 1000€ à moins de 1500€'], [4, 'De 1500€ à moins de 2000€'], [5, 'De 2000€ à moins de 2500€'], [6, 'De 3000€ à moins de 5000€'], [7, 'De 5000€ à moins de 8000€'], [8, '8000€ ou plus'], [9, 'Vous ne savez pas'] ], widget=widgets.RadioSelect, ) revmere = models.IntegerField( label='', choices=[ [1, 'Moins de 500€'], [2, 'De 500€ à moins de 1000€'], [3, 'De 1000€ à moins de 1500€'], [4, 'De 1500€ à moins de 2000€'], [5, 'De 2000€ à moins de 2500€'], [6, 'De 3000€ à moins de 5000€'], [7, 'De 5000€ à moins de 8000€'], [8, '8000€ ou plus'], [9, 'Vous ne savez pas'] ], widget=widgets.RadioSelect, ) avispar = models.IntegerField( label='', choices=[ [1, 'Ils ne peuvent pas y arriver sans faire de dettes'], [2, 'Ils y arrivent difficilement'], [3, 'C\'est juste il faut faire attention'], [4, 'Ҫa va'], [5, 'Ils sont plutôt à l\'aise'], [6, 'Ils sont vraiment à l\'aise'], [7, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) avispere = models.IntegerField( label='', choices=[ [1, 'Il ne peut pas y arriver sans faire de dettes'], [2, 'Il y arrive difficilement'], [3, 'C\'est juste il faut faire attention'], [4, 'Ҫa va'], [5, 'Il est plutôt à l\'aise'], [6, 'Il est vraiment à l\'aise'], [7, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) avismere = models.IntegerField( label='', choices=[ [1, 'Elle ne peut pas y arriver sans faire de dettes'], [2, 'Elle y arrive difficilement'], [3, 'C\'est juste il faut faire attention'], [4, 'Ҫa va'], [5, 'Elle est plutôt à l\'aise'], [6, 'Elle est vraiment à l\'aise'], [7, 'Vous ne savez pas'], ], widget=widgets.RadioSelect, ) ressfam = models.StringField() resspart = models.StringField() ressaidepub = models.StringField() resspret = models.StringField() ressjob = models.StringField() ressep = models.StringField() ressautre = models.StringField() taille = models.FloatField( label='Taille (en m)', min=1.20, max= 2.70 ) poids = models.IntegerField( label='Poids (en kg)', min=30, max=170 ) fume = models.IntegerField( label='', choices=[ [1, 'Oui tous les jours'], [2, 'Oui, occasionnellement'], [3, 'Pas du tout'] ], widget=widgets.RadioSelect, ) fumepast = models.IntegerField( label='', choices=[ [1, 'Oui'], [2, 'Non'], ], widget=widgets.RadioSelect, ) nbcig = models.IntegerField( label='Nombre de cigarette(s)', min=0, max=100 ) nbcigar = models.IntegerField( label='Nombre de cigar(s)/cigarillo(s)', min=0, max=100 ) freqalc = models.IntegerField( label='', choices=[ [1, 'Jamais'], [2, 'Une fois par mois ou moins'], [3, '2 à 4 fois par mois'], [4, '2 à 3 fois par semaine'], [5, '4 à 6 fois par semaine'], [6, 'Tous les jours'] ], widget=widgets.RadioSelect, ) consoalc = models.IntegerField( label='', choices=[ [1, '1 ou 2 verres'], [2, '3 ou 4 verres'], [3, '5 ou 6 verres'], [4, '7 à 9 verres'], [5, '10 verres ou plus'], ], widget=widgets.RadioSelect, ) apialc = models.IntegerField( label='', choices=[ [1, 'Jamais'], [2, 'Moins d\'une fois par mois'], [3, 'Une fois par mois'], [4, 'Une fois par semaine'], [5, 'Tous les jours ou presque'], ], widget=widgets.RadioSelect, ) u12subj = models.IntegerField( label='', choices=[ [1, '...quand vous êtes en bonne santé'], [2,'...quand vous êtes en mauvaise santé'], [3,'...aussi bien quand vous êtes en bonne qu\'en mauvaise santé'], ], widget=widgets.RadioSelect, ) diplo = models.IntegerField( label='', choices=[ [1, 'Licence 1ère année'], [2, 'Licence 2ème année'], [3, 'Licence 3ème année'], [4, 'Master 1ère année'], [5, 'Master 2ème année'], [6,'Doctorat'], [7,'Autre'], ], widget=widgets.RadioSelect, ) disci = models.IntegerField( label='', choices=[ [1, 'Sciences'], [2, 'Lettres, Sciences humaines et sociales, Langues, Arts'], [3, 'Droit, Economie, Gestion, Finance, Sciences politique, Comptabilité'], [4, 'Santé (Médecine, Pharmacie, Orthodontie,...)'], [5, 'STAPS'], [6,'Autre'], ], widget=widgets.RadioSelect, ) pass