174 lines
4.8 KiB
Python
174 lines
4.8 KiB
Python
|
from otree.api import (
|
|||
|
models,
|
|||
|
widgets,
|
|||
|
BaseConstants,
|
|||
|
BaseSubsession,
|
|||
|
BaseGroup,
|
|||
|
BasePlayer,
|
|||
|
Currency as c,
|
|||
|
currency_range,
|
|||
|
)
|
|||
|
|
|||
|
|
|||
|
class Constants(BaseConstants):
|
|||
|
name_in_url = 'quest_demo'
|
|||
|
players_per_group = None
|
|||
|
num_rounds = 1
|
|||
|
|
|||
|
class Subsession(BaseSubsession):
|
|||
|
pass
|
|||
|
|
|||
|
|
|||
|
class Group(BaseGroup):
|
|||
|
pass
|
|||
|
|
|||
|
|
|||
|
class Player(BasePlayer):
|
|||
|
task_start_1 = models.FloatField()
|
|||
|
task_time_1 = models.FloatField()
|
|||
|
num_errors = models.IntegerField()
|
|||
|
|
|||
|
genre = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Un homme'],
|
|||
|
[1, 'Une femme'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelectHorizontal,
|
|||
|
label="1 - Vous êtes ...",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
age = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, '0-17 ans'],
|
|||
|
[1, '18-25 ans'],
|
|||
|
[2, '26-35 ans'],
|
|||
|
[3, '36-45 ans'],
|
|||
|
[4, '46-55 ans'],
|
|||
|
[5, '56-65 ans'],
|
|||
|
[6, 'plus de 65 ans'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelectHorizontal,
|
|||
|
label="2 - Quel est votre âge ?",
|
|||
|
blank=False,
|
|||
|
min = 0,
|
|||
|
max = 100,
|
|||
|
)
|
|||
|
|
|||
|
pays = models.StringField(
|
|||
|
label="3 - Quel est votre pays de résidence ?",
|
|||
|
blank=False,
|
|||
|
)
|
|||
|
|
|||
|
code_postal = models.IntegerField(
|
|||
|
label="4 - Quel est votre code postale ?",
|
|||
|
blank=False,
|
|||
|
min = 0,
|
|||
|
max = 99999,
|
|||
|
)
|
|||
|
|
|||
|
salaire = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Moins de 1250 €'],
|
|||
|
[1, 'Entre 1250 et 1400 €'],
|
|||
|
[2, 'Entre 1400 et 1550 €'],
|
|||
|
[3, 'Entre 1550 et 1700 €'],
|
|||
|
[4, 'Entre 1700 et 1850 €'],
|
|||
|
[5, 'Entre 1850 et 2050 €'],
|
|||
|
[6, 'Entre 2050 et 2350 €'],
|
|||
|
[7, 'Entre 2350 et 2800 €'],
|
|||
|
[8, 'Entre 2800 et 3700 €'],
|
|||
|
[9, 'Plus de 3700 €'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelect,
|
|||
|
label="5 - Quel est approximativement votre niveau de salaire mensuel ?",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
socio_pro = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'agriculteurs exploitants'],
|
|||
|
[1, 'artisans, commerçants et chefs d''entreprise'],
|
|||
|
[2, 'cadres et professions intellectuelles supérieures'],
|
|||
|
[3, 'professions intermédiaires (cadres moyens)'],
|
|||
|
[4, 'employés et personnel de service'],
|
|||
|
[5, 'ouvriers qualifiés'],
|
|||
|
[6, 'manœuvres et ouvriers spécialisés'],
|
|||
|
[7, 'autres personnes sans activité professionnelle'],
|
|||
|
[8, 'étudiant'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelect,
|
|||
|
label="6 - Quelle est/était votre catégorie socio-professionnelle ?",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
annee_naissance = models.IntegerField(
|
|||
|
label="7 - Quelle est votre année de naissance ?",
|
|||
|
blank=False,
|
|||
|
min=1900,
|
|||
|
max=2010,
|
|||
|
)
|
|||
|
|
|||
|
etudes = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Aucun diplôme ou certificat d’études primaires'],
|
|||
|
[1, 'Brevet des collèges'],
|
|||
|
[2, 'CAP, BEP ou équivalent'],
|
|||
|
[3, 'Baccalauréat, brevet professionnel ou équivalent'],
|
|||
|
[4, 'Diplôme du supérieur court (niveau bac +2)'],
|
|||
|
[5, 'Diplôme du supérieur long (supérieur à bac +2)'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelect,
|
|||
|
label="8 - Quel est le plus haut diplôme que vous avez obtenu ? Si toujours étudiant, quel est le diplôme dans lequel vous êtes actuellement inscrit ?",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
police_question1 = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Très satisfaisante'],
|
|||
|
[1, 'Satisfaisante'],
|
|||
|
[2, 'Peu satisfaisante'],
|
|||
|
[3, 'Pas du tout satisfaisante'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelectHorizontal,
|
|||
|
label="9 - A propos de l’action en général de la police ou de la gendarmerie nationale dans la société française actuelle, vous diriez généralement qu’elle est …",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
police_question2 = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Souvent'],
|
|||
|
[1, 'De temps en temps'],
|
|||
|
[2, 'Rarement'],
|
|||
|
[3, 'Jamais'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelectHorizontal,
|
|||
|
label="10 - Vous arrive-t-il personnellement de vous sentir en insécurité dans votre quartier ou votre village ?",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
police_question3 = models.IntegerField(
|
|||
|
choices=[
|
|||
|
[0, 'Pas du tout d’accord'],
|
|||
|
[1, 'Plutôt pas d’accord'],
|
|||
|
[2, 'Plutôt d’accord'],
|
|||
|
[3, 'Tout à fait d’accord'],
|
|||
|
],
|
|||
|
widget=widgets.RadioSelectHorizontal,
|
|||
|
label="11 - Imaginons que dans le futur vous soyez la victime d’un vol. Vous êtes certain d’aller le déclarer auprès de la police.",
|
|||
|
blank=False
|
|||
|
)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|