Skip to content

betagouv/seves

Repository files navigation

Sèves

Gestion mutualisée de tous les événements sanitaires

Technologies

  • Git
  • PostgreSQL
  • Python 3
  • Django
  • HTML, CSS
  • Système de Design de l'État DSFR
  • JavaScript (AlpineJS, vanilla)
  • Pytest
  • Playwright (tests E2E)
  • Ruff (linter/formatter)
  • Pre-commit
  • DjHTML (indenter)
  • Sentry

Installation et configuration

Récupération du code source

git clone [email protected]:betagouv/seves.git

Python 3

Assurez vous d'avoir Python 3 d'installé.

Création de l'environnement virtuel Python

python3 -m venv venv

Activation de l'environnement virtuel Python

source venv/bin/activate

Installation de pip-tools

pip install pip-tools

Installation des dépendances Python

pip-sync

Création de la base de données

Créez la base de données via un client PosgreSQL ou la ligne de commande psql (exemple: seves).

Variables d'environnement

Copiez le fichier d'exemple fourni (.env.dist) et définissez les variables d'environnement :

cp .env.dist .env

Initialisation de la base de données

./manage.py migrate

Creation d'un super utilisateur pour l'accès à Django Admin

./manage.py createsuperuser

Démarrer le serveur de développement

./manage.py runserver

Se rendre sur http://localhost:8000/

Gestion des dépendances Python

Les dépendances sont gérées via pip-tools.

Pour ajouter une nouvelle dépendance au projet :

  • ajoutez la dépendance dans le fichier requirements.in
  • executez la commande pip-compile (pour mettre à à jour le fichier requirements.txt)
  • executez la commande pip-sync (installation de la nouvelle dépendance)

Travailler avec un service S3 local

Suivre la documentation de minio sur le hub docker, en résumé pour avoir le stockage persistent:

sudo mkdir /mnt/data
sudo chown votre_user:votre_groupe /mnt/data/
podman run -v /mnt/data:/data  -p 9000:9000 -p 9001:9001 quay.io/minio/minio server /data --console-address ":9001"

Une fois dans la console Web de minio vous pouvez vous créer une clé d'accès ainsi qu'un bucket en local. Configurez ensuite votre fichier .env avec STORAGE_ENGINE="storages.backends.s3.S3Storage" et les tokens d'authentification (cf exemple dans .env.dist).

Travailler avec l'authentification en local

Le backend d'authentification Agricoll nécessite l'utilisation du protocole HTTPS ainsi que d'URL spécifique (impossible de se connecter depuis localhost par exemple).

Pour faciliter le dévellopement au quotidien il est possible d'utiliser un autre backend OIDC en changeant les variables d'environnement.

Un exemple est donné dans le fichier .env.dist, les informations sur les logins et mots de passe, ainsi que les endpoints pour le backend sont disponibles dans la documentation.

Travailler avec l'antivirus en local

Les fichiers uploadés sur les documents sont analysé par un antivirus et ne sont pas disponible au téléchargement tant qu'ils n'ont pas été analysé. En local il est possible de désactiver ce comportement avec la variable d'environnement BYPASS_ANTIVIRUS afin d'avoir accès aux fichiers de manière immédiate.

Cette même variable est utilisée dans les tests pour que le fichier soit disponible immédiatement sur l'objet concerné.

Si vous souhaitez réaliser les analyses antivirus en local il faut:

  • Vérifier que BYPASS_ANTIVIRUS est bien à False
  • Installer clamav : instructions pour linux . Attention a bien installer le daemon clamav-daemon.
  • Lancer la commande scan_documents pour analyser les documents et mettre à jour leur statut en base.

Travailler avec les taches Celery en local

Si vous souhaitez exécuter les taches directement lors de la création sans passer par le broker et le worker vous pouvez utiliser la variable d'env CELERY_TASK_ALWAYS_EAGER à True.

Pour travailler avec un broker et Celery en local, il faut:

  • Installer un server redis (ou le broker compatible de votre choix)
  • Configurer la variable SCALINGO_REDIS_URL dans votre fichier .env
  • Pour lancer les tâches, dans un shell : celery -A seves worker --loglevel=INFO
  • Pour les tâches de mail les mails sont directement affichés dans la console du worker

Tests

E2E

Les tests E2E sont réalisés avec la bibliothèque Playwright (installé précédemment).

Avant de pouvoir lancer les tests E2E, il faut installer les navigateurs (source) :

playwright install

Lancez les tests :

python -m pytest

Recette

Déploiement

git push scalingo main

Django admin

Création d'un super user (commande CLI scalingo à éxecuter en local) : scalingo --app my-app run python manage.py createsuperuser

Production

CRON

Sur Scalingo, des crons sont configurés via Scalingo Scheduler (cf. fichier cron.json à la racine du projet). Ils sont monitorés via Sentry Cron Monitors.

Import du fichier d'extraction des contacts Agricoll

scalingo --app APP_NAME run --file FILE_PATH python manage.py import_contacts /tmp/uploads/FILE_NAME.csv

About

Gestion mutualisée de tous les événements sanitaires

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •