Le Service de Portrait de l’ARtificialisation des TErritoires (ou SPARTE) est une plateforme qui aide les collectivité à mesurer l'artificialisation de leurs sols et ainsi se conformer aux nouvelles lois.
- Cloner le répository git
git clone [email protected]:MTES-MCT/sparte.git
puis aller dans le dossiercd sparte
- Installer les dépendances avec pipenv
pipenv install --dev
- Créer un fichier .env avec (à compléter avec vos crédentials, voir ci-dessous...)
- Démarrer les bases de données
docker-compose up -d
- Basculer dans l'environnement virtuel
pipenv shell
- Migration initiale
python manage.py migrate
- Créer un super utilisateur
python manage.py createsuperuser
- Démarrer le serveur
python manage.py runserver 0.0.0.0:8080
- Ouvrer la home page http://localhost:8080/
- Copier les fichiers de données OCS GE et Cérema... sur votre bucket AWS
- Lancer l'installation des données
python scripts/cmd.py --env local rebuild
- Installer les dépendances front
npm install
- Lancer le build du bundle
npm run build:dev
ounpm run build:prod
(Génère un nouveau bundle à chaque mise à jour du fichier ./assets/scripts/index.js)
Pour une installation locale, ces valeurs doivent être dans le fichier .env à la racine du projet. Pour le déploiement sur scalingo, ces variables sont à ajouter dans la section "Environnement" du container.
Nom | description | valeur locale |
---|---|---|
ALERT_DIAG_MEDIUM | Comment envoyer les alertes des diagnostics bloqués: mattermost, email, both | |
ALERT_DIAG_EMAIL_RECIPIENTS | Liste des adresses e-mails auxuqelles envoyées les alertes diagnostics bloqués | 127.0.0.1,localhost |
ALERT_DIAG_MATTERMOST_RECIPIENTS | channel (~sparte) ou personne (@swann) à qui envoyer un message direct de diagnostics bloqués | 127.0.0.1,localhost |
ALLOWED_HOSTS | urls qui peuvent se connecter au site web | 127.0.0.1,localhost |
API_KEY_SENDINBLUE | Clé api de sendinblue | |
AWS_ACCESS_KEY_ID | compte AWS pour stocker les données | |
AWS_LOCATION | prefix pour ne pas avoir de collisions entre les instances de l'app | local |
AWS_S3_REGION_NAME | région de AWS | eu-west-3 |
AWS_SECRET_ACCESS_KEY | secret pour se connecter à AWS | |
AWS_STORAGE_BUCKET_NAME | nom du bucket de stockage | sparte-staging |
CELERY_BROKER_URL | chaîne pour se connecter à redis | redis://127.0.0.1:6379/0 |
CELERY_RESULT_BACKEND | chaîne pour se connecter à redis | redis://127.0.0.1:6379/0 |
DATABASE_URL | chaîne pour se connecter à la base de données Postgresql + gis | postgis://postgres:[email protected]:54321/postgres |
DEBUG | activer ou non les messages détaillés d'erreur | 1 |
DEBUG_TOOLBAR | activer la barre de debug de Django | 1 |
DEFAULT_FROM_EMAIL | [email protected] | |
DOMAIN_URL | l'url sur laquelle est branchée l'application | http://localhost:8080/ |
EMAIL_ENGINE | indique à l'application le backend à utiliser pour envoyer les e-mails. 2 choix disponibles : sendinblue, local | local |
ENVIRONMENT | indique sur quel environnement est exécuté l'app. Choix possibles: local, staging, prod | local |
HIGHCHART_SERVER | ulr pour accéder au serveur générant des images à partir de paramètres Highcharts | https://highcharts-export.osc-fr1.scalingo.io |
MATTERMOST_WEBHOOK | Webhook personnel pour envoyer des messages dans Mattermost | https://mattermost.incubateur.net/hooks/uak581f8bidyxp5td67rurj5sh |
MATOMO_ACTIVATE | Détermine si des infos doivent être envoyé à Matomo | 0 |
MATOMO_TOKEN | Token pour envoyer les données à Matomo | |
SECRET | salt pour django | |
USE_SRI | Active l'utilisation des SRI même lorsque debug = 1 | 1 |
USE_CSP | Active l'utilisation des CSP même lorsque debug = 1 | 1 |
Variables d'environnement spécifique à Scalingo. Voir les valeurs sur Scalingo.
Nom | description |
---|---|
DISABLE_COLLECTSTATIC | Requis pour déployer correctement les buildpacks |
GDAL_DATA | requis pour le buildpack qui install GeoDjango |
LD_LIBRARY_PATH | requis pour le buildpack qui install GeoDjango |
PROJ_LIB | requis pour le buildpack qui install GeoDjango |
SCALINGO_POSTGRESQL_URL | Ajouté lorsque l'addon postgres est activé |
SCALINGO_REDIS_URL | Ajouté lorsque l'addon redis est activé |
Vérifier la couverture des TU: coverage run -m pytest && coverage report -m
Vérifier que le formatage est bon: flake8
Si vous souhaitez bypasser pre-commit hook (usefull pour ajouter des fichiers shapes sans les modifiers):
git commit --no-verify
Sometimes, you need to fetch and install a Scalingo DB backup.
- Fetch backup from scalingo app > ressources > pg dashboard > backup, download last backup (eg. 20220830000404_sparte_1396.tar.gz)
- Uncompress
tar -xf 20220830000404_sparte_1396.tar.gz
- restore
pg_restore --clean --if-exists --no-owner --no-privileges --no-comments --dbname postgres://postgres:[email protected]:5432/postgres 20220830000404_sparte_1396.pgsql
The process is not stable yet. Use it with caution.
- Download shape files from IGN's website https://geoservices.ign.fr "ACCUEIL > CATALOGUE > OCS GE"
- Extract shape files and zip them by name, remove anysubfolder, the zip should contain only files
- Name zip file accordingly to expected name in public_data/management/commands/load_ocsge.py. If you want to update 2016 Gers millesime, name it accordingly to what you will find in class GersOcsge2016 and the property shape_file_path (which is gers_ocsge_2016.zip when writhing those lines)
- Upload the zip in the bucket, in data folder.
- Trigger the loading with the command
python scripts/cmd.py --env prod load-ocsge --item .....
, replace ... by the item you want to load (following previous example it'spython scripts/cmd.py --env local load-ocsge --item GersOcsge2016
). Obviously test it in staging first. - Update all precalculated data: build_commune_data, build_artificial_area, set_density
- Update official data origin in gitbook
- Update admin's Départements if new OCS GE has been added
Example, update Gers OCS GE with 2022-06 data:
export ENV='local'
python scripts/cmd.py --env $ENV load-ocsge --item GersOcsge2016 && \
python scripts/cmd.py --env $ENV load-ocsge --item GersOcsge2019 && \
python scripts/cmd.py --env $ENV load-ocsge --item GersZoneConstruite2016 && \
python scripts/cmd.py --env $ENV load-ocsge --item GersZoneConstruite2019 && \
python scripts/cmd.py --env $ENV load-ocsge --item GersOcsgeDiff && \
python scripts/cmd.py --env $ENV run 'python manage.py build_commune_data --departement Gers' && \
python scripts/cmd.py --env $ENV run 'python manage.py build_artificial_area --departement Gers' && \
python scripts/cmd.py --env $ENV run 'python manage.py set_density --reset --departement Gers'
MEP 4.0
- Charger les zones urbaines du GERS : ./manage.py import_gpu --dept 32