Module calculatrice monitoring pour GeoNature
En considérant que le code source a été installé dans ~/calculatrice_monitoring avec git clone ou une archive.
geonature install-gn-module ~/calculatrice_monitoringLe module calculatrice cible GeoNature v2.16.3 et gn_module_monitoring v1.1.0.
Le module gn_module_monitoring utilise plusieurs termes pour désigner les protocoles de suivi selon le contexte :
« protocoles », « modules » ou « sous-modules », « MonitoringModules ». Dans le cadre de ce module calculatrice le terme
protocole sera privilégié autant que possible, que ce soit dans les interfaces utilisateurs ou dans le code.
- on considère que ce projet est placé dans le même répertoire parent que le projet GeoNature (sinon ajuster le path de
frontend/tsconfig.json) - placer un lien symbolique vers le répertoire
node_modulesdu frontend GeoNature à la racine du projet (ln -s ../GeoNature/frontend/node_modules) - utiliser le virtualenv de GeoNature
- installer les dépendances frontend de développement (pour lancer les tests, le formatage auto)
Ce projet utilise ruff, prettier et eslint pour assurer la cohérence du style et les bonnes pratiques Python et TypeScript. Vérifier que votre éditeur utilise les configurations fournies avec le projet pour auto-formater et linter le code.
Ce projet suit la convention Conventional Commits.
Les messages de commits doivent être de la forme :
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Par exemple :
feat(indicateur): add creation datetimedocs: update README
Les tests backend doivent être lancés sur une BD ne contenant pas d'objets du module calculatrice. Voici la procédure pour obtenir une BD de test :
- à partir de la BD initialisée lors de l'installation standard de GeoNature
- installer gn_module_monitoring 1.1.0 avec
geonature install-gn-module ./gn_module_monitoring --build false - installer le module calculatrice
geonature install-gn-module ./calculatrice_monitoring --build false - installer les protocoles MhéO de test
Pour installer les protocoles MhéO de test :
- dans
~/GeoNature/backend/media/monitorings(créer le répertoire s'il n'existe pas) faire :
ln -s ~/calculatrice_monitoring/data/protocols/mheo_amphibiens_test
ln -s ~/calculatrice_monitoring/data/protocols/mheo_flore_test
ln -s ~/calculatrice_monitoring/data/protocols/mheo_odonate_test
ln -s ~/calculatrice_monitoring/data/protocols/mheo_pedologie_test
ln -s ~/calculatrice_monitoring/data/protocols/mheo_piezometrie_test
puis avec le virtualenv geonature activé :
geonature monitorings install mheo_amphibiens_test
geonature monitorings install mheo_flore_test
geonature monitorings install mheo_odonate_test
geonature monitorings install mheo_pedologie_test
geonature monitorings install mheo_piezometrie_test
Enfin dans le répertoire ~/calculatrice_monitoring exécuter pytest --cov.
Pour l'étape 1. il est aussi possible de partir de l'image docker geonature-db générée pour la version adéquate de GeoNature.
Les tests frontend nécessitent que le module calculatrice ait été installé sur l'instance GeoNature locale et que le frontend et le backend soient démarrées.
Dans le répertoire calculatrice_monitoring/frontend exécuter npx cypress run.
Pour exécuter localement les vérifications appliquées par la CI il faut activer pre-commit comme suit :
pre-commit install --install-hooksLes vérifications suivantes sont exécutées :
- linter ruff sur les fichiers python (modifications appliquées directement si possible, sinon erreur dans les logs)
- formatage ruff sur les fichiers python (modifications appliquées directement)
- vérification que le message de commit suit la convention (commit échoue si ce n'est pas le cas)
- formatage code frontend + organisation imports avec prettier (check-only, modifications à appliquer avec
npm run format)
Note : pour le moment prettier vérifie l'intégralité des fichiers frontend à chaque commit, il n'est donc pas possible de commiter un fichier bien formaté si d'autres ne le sont pas.
Les données de tests calculatrice-samples-test sont utilisées à la fois comme base pour les tests du backend et comme
migration optionnelle permettant de disposer de données sur une instance de test/démo. Ainsi les fixtures pytest
correspondantes font proxy vers des fonctions d'installation qui sont également appelées par la ou les migration(s) de la
branche calculatrice-test-sample.
La procédure pour obtenir une base de données de test est décrite dans une section précédente.
Pour peupler la BD d'une instance GeoNature de dev/test/démo :
- BD dans le même état que pour les tests backend
- appliquer la migration :
geonature db upgrade calculatrice-samples-test@head
État de la BD nécessaire pour exécuter les tests frontend :
- BD dans le même état que pour les tests backend
- appliquer la migration :
geonature db upgrade calculatrice-samples-test@head
L'écriture des méthodes downgrade des migrations calculatrice-samples-test est possible mais différée pour le moment
afin d'avancer. Pour le moment il faut garder une BD ou un dump avant l'installation des migrations en backup pour « désinstaller ».
Les permissions du module sont définies soit directement au niveau du module
(pseudo-permission object ALL) soit attachées au permission object
CAL_ADMIN_INDICATOR pour les permissions d'administration.
Les permissions du module sont en lecture seule et peuvent être données à n'importe quel
utilisateur. Les permissions d'administration permettent de modifier et de supprimer les données et
notamment le programme Python exécuté pour chaque indicateur. Certaines instructions dans ces
programmes peuvent potentiellement compromettre la stabilité et la sécurité de l'instance GeoNature.
La permission U (Update) de CALC_ADMIN_INDICATOR doit donc être accordée avec discernement.
Tableau des permissions du module (ALL) :
| Permission | Description dans notre cas | Impact du scope |
|---|---|---|
| Create | Inutile ici | |
| Read | Permet de visualiser les résultats d'un indicateur et ses statistiques. | Dans la sélection des zones humides seuls celles accessibles à l'utilisateur sont sélectionnables. |
| Update | Inutile ici | |
| Validate | Inutile ici | |
| Export | Permet de télécharger les tableaux de référence. Permettra à terme d'exporter les résultats d'un indicateur et ses statistiques. | Dans la sélection des zones humides seuls celles accessibles à l'utilisateur sont sélectionnables. |
| Delete | Inutile ici |
Tableau des permissions d'administration (CALC_ADMIN_INDICATOR) :
| Permission | Description dans notre cas | Impact du scope |
|---|---|---|
| Create | Permet de créer des objets d'administration d'indicateurs (indicateurs, statistiques, tableaux de référence …) | Aucun |
| Read | Permet de visualiser la définition des objets d'administration d'indicateurs. Permet aussi de voir les indicateurs non publics. | Aucun |
| Update | Permet de mettre à jour les objets d'administration d'indicateurs | Aucun |
| Validate | Inutile ici | Aucun |
| Export | Inutile pour l'instant | Aucun |
| Delete | Permet la suppression des objets d'administration d'indicateurs. | Aucun |
Les permissions monitorings de l'utilisateur de la calculatrice sont nécessaires pour :
- permission R sur
MONITORINGS_MODULESpour afficher le protocole et les indicateurs associés sur la homepage de la calculatrice - permission R sur
MONITORINGS_GRP_SITESetMONITORINGS_SITESpour afficher les groupes de sites et permettre la sélection d'un groupe lors du paramétrage d'un indicateur. - lors du calcul d'un indicateur le groupe et les sites sélectionnés sont disponibles ainsi que TOUTES les visites et observations de ces sites sans vérification des permissions.