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.

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