Development¶

Environnement de développement¶

Prérequis¶

Conseil: utiliser asdf pour la gestion des environnement virtuel node et python

SpĂ©cificitĂ© d’installation pour les processeur Mx de Mac¶

https://gist.github.com/codingjoe/a31405952ec936beba99b059e665491e

Technologies¶

  • Python

  • Django

  • DBT

  • github

  • Licence MIT

  • Node

  • Parcel

  • DSFR

  • honcho

  • Scalingo

  • Sentry

  • Pytest

  • Whitnoise

  • Tailwind

  • Dependabot

  • Django-debug-toolbar

Installation & Exécution¶

Configuration des variables d’environnement: ajouter (ou mettre à jour si existant) la variable AIRFLOW_UID de telle sorte à ce que Docker lance Airflow avec notre utilisateur

cp .env.template .env
sed -i '/^AIRFLOW_UID=/d' .env && echo "AIRFLOW_UID=$(id -u)" >> .env

Modifier les variables dans le fichier .env si nécessaire

Les bases de données source MySQL et cible Postgres + Postgis sont executées et mises à disposition par le gestionnaire de conteneur Docker

docker compose  --profile lvao up

Installation des dépendances python et javascript

poetry env activate
poetry install --with dev,airflow
npm install

Migration

python manage.py migrate

Population de la base (optionel, si la base de donnĂ©es de production est chargĂ©e sur l’environnement de dĂ©veloppement)

python manage.py loaddata categories actions acteur_services acteur_types

Create superuser¶

python manage.py createsuperuser

Lancement¶

docker compose --profile airflow up -d
honcho start -f Procfile.dev

Honcho dĂ©marrera les containers Docker s’ils ne sont pas dĂ©jĂ  dĂ©marrĂ©s. Une fois les processus dĂ©marrĂ©s, le serveur web sera accessible Ă  l’adresse http://localhost:8000, Ă©coutant sur le port 8000.

Test¶

Test python avec pytest

pytest

Test Js unitaire

npm run test

End to end avec Playwright

npx playwright install --with-deps
npx playwright test

Ajout et modification de package¶

Python¶

Utiliser poetry

poetry add <package>

option --group dev pour les dépendances de développement et --group airflow pour les dépendances de airflow

Javascript¶

Utiliser npm

npm install <package>

option --dev pour les dépendances de développement

Installer les hooks de pre-commit¶

Pour installer les git hook de pre-commit, installer le package precommit et installer les hooks en executant pre-commit

pre-commit install

populate Acteur Réemploi from LVAO Base file¶

Create a one-off contanier and download LVAO base file from your local using –file option.

scalingo --region osc-fr1 --app quefairedemesobjets run --file backup_db.bak/Base_20221218_Depart.csv bash

following message should be display in prompt:

-----> Starting container one-off-1576  Done in 0.224 seconds
 Upload /Users/nicolasoudard/workspace/beta.gouv.fr/quefairedemesobjets/backup_db.bak/Base_20221218_Depart.csv to container.



uploaded file is stored in /tmp/uploads folder

Launch import :

python manage.py populate_lvao_base /tmp/uploads/Base_20221218_Depart.csv

Import DB from production¶

DUMP_FILE=</path/to/dump/file.pgsql>
DATABASE_URL=postgres://qfdmo:qfdmo@localhost:6543/qfdmo  # pragma: allowlist secret

for table in $(psql "${DATABASE_URL}" -t -c "SELECT \"tablename\" FROM pg_tables WHERE schemaname='public'"); do
     psql "${DATABASE_URL}" -c "DROP TABLE IF EXISTS \"${table}\" CASCADE;"
done
pg_restore -d "${DATABASE_URL}" --clean --no-acl --no-owner --no-privileges "${DUMP_FILE}"