Development¶
Environnement de développement¶
Prérequis¶
docker-compose
python 3.12
node 20
gdal (librairie nĂ©cessaire Ă lâutilisation de GeoDjango)
Installer et configurer le client Scaleway en suivant les instructions de Scaleway
Installer et configurer le client Scalingo eb suivant les instructions de Salingo
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}"