Les emplois de l'inclusion est un service numérique de délivrance des PASS IAE et de mise en relation d'employeurs inclusifs avec des candidats éloignés de l'emploi par le biais de tiers (prescripteurs habilités, orienteurs) ou en autoprescription.
Les valeurs par défaut de dev.py
permettent de lancer un environnement fonctionnel.
Cependant, il est recommandé d'en prendre connaissance pour noter par exemple que les emails ne sont pas réellement envoyés mais que leur contenu est simplement écrit dans la sortie standard.
Le reste de la configuration se fait avec des variables d'environnement.
Celles concernant notre hébergeur CleverCloud sont définis au niveau du déploiement et
de l'app CleverCloud tandis que les autres paramètres applicatifs indépendants du PaaS
sont définis dans le projet itou-secrets
.
L’application est développée avec Django, la base de données est gérée par PostgreSQL et le stockage objet type S3 MinIO.
Les instructions ci-dessous vous permettront d’obtenir un environnement de développement pratique à utiliser au quotidien. Pour obtenir un environnement fonctionnel très rapidement, mais moins ouvert au développement, suivre les instructions containerization.
Les dépendances (base de données PostgreSQL et le stockage objet type S3) sont rendues disponibles par Docker et Docker Compose.
Démarrez les dépendances de développement avec la commande :
docker compose up
Note : Vous pouvez personnaliser la configuration des dépendances gérées
par Docker Compose en créant un fichier
.env
au même niveau que le
fichier README.md
.
L’adaptateur Python pour PostgreSQL, psycopg, a quelques pré-requis auxquels votre système doit répondre. https://www.psycopg.org/docs/install.html#runtime-requirements
Par ailleurs, le projet utilise GDAL, et nécessite son installation préalable.
Sur MacOS :
$ brew install gdal
Sur Ubuntu :
$ apt-get install gdal-bin
La commande make
suivante crée un
virtualenv
et installe les
dépendances pour le développement. Elle peut être exécutée régulièrement pour
s’assurer que les dépendances sont bien à jour.
$ make venv
Dans un virtualenv
, vous pouvez utiliser les commandes Django habituelles
(./manage.py
) mais également les recettes du Makefile.
Par défaut l'environment sera stocké dans le répertoire .venv
. En bash/zsh c'est activé
avec la commande source .venv/bin/activate
(doc).
Il est recommandé d'utiliser direnv qui permet l'activation de l'environment automatique.
Les fichiers téléversés sont enregistrés dans un stockage objet type S3. En local, le service est rendu par MinIO. Sa console d’administration est disponible à l’adresse http://localhost:9001/.
Login : minioadmin
Password : minioadmin
Afin de créer les buckets nécessaires au développement et aux tests, lancer la commande :
$ make buckets
Démarrer le serveur de développement avec la commande :
$ make runserver
Vous pouvez y accéder à l'adresse http://localhost:8000/.
En supposant que votre serveur ait pour IP 100.1.2.3
, ajoutez cette ligne à votre .envrc
:
export RUNSERVER_DOMAIN=100.1.2.3:8000
puis direnv allow
, direnv reload
et enfin relancez make runserver
.
Vous pouvez y accéder à l'adresse http://100.1.2.3:8000/ depuis n'importe quel appareil de votre réseau local.
$ make resetdb
Inspirez-vous de la suite de commandes suivante :
$ rclone copy --max-age 24h --progress emplois:/encrypted-backups ./backups
$ pg_restore --jobs=4 --no-owner backups/backup.dump
$ python manage.py set_fake_passwords
$ python manage.py shell --command 'from itou.users.models import User; print(User.objects.update(identity_provider="DJANGO"))'
Rendez-vous sur la doc de itou-backups pour plus d’infos.
make quality
Pre-commit est un outil qui gère des hooks de pre-commit Git.
Cela remplace les configurations individuelles par un fichier de configuration présent dans le projet.
$ pre-commit install
Le projet utilise pytest.
Lancer la suite complète, comme sur la CI :
make test
Lancer un test en particulier :
pytest itou/utils/tests.py::JSONTest::test_encoder
La liste des dépendances est consignée dans les fichiers requirements/*.in
.
Une fois ces fichiers modifiés, les dépendances sont figées avec l’outil
pip-tools. La commande suivante permet
de mettre à jour une dépendance, par exemple flake8
:
$ PIP_COMPILE_OPTIONS="-P flake8" make compile-deps
Si les changements paraissent corrects, ils peuvent être ajoutés à git
et
commit.