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 upNote : 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.
uv est utilisé pour installer la bonne version de Python et les dépendances
du projet.
Pour l’installer, suivre la documentation officielle https://docs.astral.sh/uv/getting-started/installation/. Un paquet est disponible pour la plupart des distributions Linux.
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 gdalSur Ubuntu :
$ apt-get install gdal-binLa 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 venvDans 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 bucketsDémarrer le serveur de développement avec la commande :
$ make runserverVous 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 resetdbSi vous développez hors ligne et que le fichier de dépendances
(requirements/dev.txt) a changé, les commandes make vont planter, puisque
lorsque ce fichier change, uv va être lancé pour mettre à jour les dépendances
dans le .venv.
Pour passer outre, vous pouvez utiliser make avec la variable NETWORK_MODE :
$ make NETWORK_MODE=offline resetdbInspirez-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 qualityPre-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 installLe projet utilise pytest.
Lancer la suite complète, comme sur la CI :
make testLancer un test en particulier :
pytest tests/utils/tests.py::TestJSON::test_encoderLa 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 django :
$ make compile-deps PIP_COMPILE_OPTIONS="-P django"Si les changements paraissent corrects, ils peuvent être ajoutés à git et
commit.