from otree.api import * import statistics import random doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'part_1' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): q17 = models.IntegerField( choices=[(1, "Aucun"), (2, "Très peu"), (3, "Un petit peu"), (4, "Un peu"), (5, "Quelques-uns"), (6, "Beaucoup"), (7, "Énormément") ], label=" Avez-vous fait attention d'acheter des fruits et légumes cultivés sans pesticides ? ", widget=widgets.RadioSelectHorizontal) q7 = models.IntegerField( choices=[(1, "Aucun"), (2, "Très peu"), (3, "Un petit peu"), (4, "Un peu"), (5, "Quelques-uns"), (6, "Beaucoup"), (7, "Énormément") ], label=" Avez-vous acheté des livres ou des magazines ? ", widget=widgets.RadioSelectHorizontal) q8 = models.IntegerField( choices=[(1, "Aucun"), (2, "Très peu"), (3, "Un petit peu"), (4, "Un peu"), (5, "Quelques-uns"), (6, "Beaucoup"), (7, "Énormément") ], label=" Avez-vous acheté des objets de décoration intérieure ? ", widget=widgets.RadioSelectHorizontal) q19 = models.IntegerField( choices=[(1, "Aucun"), (2, "Très peu"), (3, "Un petit peu"), (4, "Un peu"), (5, "Quelques-uns"), (6, "Beaucoup"), (7, "Énormément") ], label=" Avez-vous fait attention d'acheter des produits fabriqués à partir de matériaux recyclés ? ", widget=widgets.RadioSelectHorizontal) q18 = models.IntegerField( choices=[(1, "Aucun"), (2, "Très peu"), (3, "Un petit peu"), (4, "Un peu"), (5, "Quelques-uns"), (6, "Beaucoup"), (7, "Énormément") ], label=" Avez-vous fait attention d'acheter des produits ménagers, lessive ou produits d'entretien, qui respectent l'environnement ? ", widget=widgets.RadioSelectHorizontal) q14 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Avez-vous fréquenté des salles de théâtre ou de cinéma ? ", widget=widgets.RadioSelectHorizontal) q3 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Avez-vous suivi un régime alimentaire ou un plan de nutrition spécifique ? ", widget=widgets.RadioSelectHorizontal) q11 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Avez-vous voté pour un candidat lors d'une élection, au moins en partie, parce qu'il ou elle était en faveur de la protection de l'environnement ? ", widget=widgets.RadioSelectHorizontal) q13 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Évitez-vous d'acheter des produits d'une entreprise dont vous savez qu'elle peut nuire à l'environnement ? ", widget=widgets.RadioSelectHorizontal) q16 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Pratiquez-vous une ou des activités manuelles ? ", widget=widgets.RadioSelectHorizontal) q20 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Pratiquez-vous un sport ou une activité physique avec vos amis ou votre famille ? ", widget=widgets.RadioSelectHorizontal) q4 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous est-il arrivé de boycotter ou d'éviter d'acheter les produits d'une entreprise parce que vous pensiez qu'elle nuisait à l'environnement ? ", widget=widgets.RadioSelectHorizontal) q5 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous est-il arrivé de donner de l'argent à un organisme/association qui agit en faveur de l'environnement ? ", widget=widgets.RadioSelectHorizontal) q15 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous est-il arrivé de ressentir un sentiment d'insécurité dans votre quartier ? ", widget=widgets.RadioSelectHorizontal) q10 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous est-il arrivé de signer une ou des pétitions en faveur de la protection de l'environnement ? ", widget=widgets.RadioSelectHorizontal) q12 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous est-il arrivé d'écrire ou de téléphoner à un représentant politique pour soutenir une action en faveur de la protection de l'environnement ? ", widget=widgets.RadioSelectHorizontal) q9 = models.IntegerField( choices=[(1, "Jamais"), (2, "Presque jamais"), (3, "Rarement"), (4, "Parfois"), (5, "Assez souvent"), (6, "Souvent"), (7, "Très souvent")], label=" Vous êtes vous informé à travers des newsletters/articles ou bulletins d'informations écrits par des groupes pro-environnementaux ? ", widget=widgets.RadioSelectHorizontal) q1 = models.IntegerField(choices=[(4, "Oui"), (1, "Non")], label=" Êtes-vous membre d'un groupe dont l'objectif principal est de préserver ou de protéger l'environnement ? ", widget=widgets.RadioSelectHorizontal) q2 = models.IntegerField(choices=[(1, "Oui"), (4, "Non")], label=" Votre niveau de vie a-t-il évolué du fait de l'inflation ? ", widget=widgets.RadioSelectHorizontal) q6 = models.IntegerField(choices=[(1, "Oui"), (4, "Non")], label=" Votre situation d'études/professionnelle a-t-elle évoluée ? ", widget=widgets.RadioSelectHorizontal) q24 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je me considère comme quelqu'un de prudent. ", widget=widgets.RadioSelect) q26 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à accepter des réductions de mon niveau de vie pour protéger l'environnement. ", widget=widgets.RadioSelect) q25 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à accepter une réduction de mon salaire pour un horaire de travail plus flexible. ", widget=widgets.RadioSelect) q30 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à payer des impôts spécifique pour financer la protection de l'environnement. ", widget=widgets.RadioSelect) q29 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à payer des produits plus chers s'ils contribuent à la protection de l'environnement. ", widget=widgets.RadioSelect) q28 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à payer un supplément pour une œuvre d'art en édition limitée. ", widget=widgets.RadioSelect) q27 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je serais prêt(e) à renoncer à un certain contrôle sur ma vie personnelle pour un meilleur développement de ma carrière. ", widget=widgets.RadioSelect) q22 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je suis satisfait(e) de mes relations avec mes amis et ma famille. ", widget=widgets.RadioSelect) q23 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" J'essaie de pratiquer une activité physique régulière. ", widget=widgets.RadioSelect) q21 = models.IntegerField( choices=[(1, "Pas du tout d'accord"), (2, "Plutôt pas d'accord"), (3, "Légèrement pas d'accord"), (4, "Ni d'accord, ni pas d'accord"), (5, "Légèrement d'accord"), (6, "Plutôt d'accord"), (7, "Tout à fait d'accord")], label=" Je suis satisfait(e) de mon lieu d'habitation. ", widget=widgets.RadioSelect) score = models.IntegerField(initial=1) rank = models.FloatField() roole = models.StringField() what = models.StringField() # FUNCTION # PAGES class Presentation(Page): pass class Survey(Page): form_model = 'player' @staticmethod def get_form_fields(player: Player): questions = ["q17", "q7", "q8", "q19", "q18", "q14", "q3", "q11", "q13", "q16", "q20", "q4", "q5", "q15", "q10", "q12", "q9", "q1", "q2", "q6", "q24", "q26", "q25", "q30", "q29", "q28", "q27", "q22", "q23", "q21"] return questions @staticmethod def before_next_page(player: Player, timeout_happened): player.rank = sum([player.q1, player.q4, player.q5, player.q9, player.q10, player.q11, player.q12, player.q13, player.q17, player.q18, player.q19, player.q26, player.q29, player.q30]) if player.rank <= 52: if random.randint(1, 2) == 1: player.roole = "C" player.what = "c1" else: player.roole = "A" player.what = "a" else: if random.randint(1, 2) == 1: player.roole = "C" player.what = "c2" else: player.roole = "B" player.what = "b" participant = player.participant participant.roole = player.roole participant.what = player.what class Results(Page): pass page_sequence = [Presentation, Survey, Results]