From 0025185a65625117532ed4d24f67053fe772aedf Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 23 Aug 2023 22:12:47 +0200 Subject: [PATCH 01/24] User-manual / Add Admin permission section #2605 --- docs/user-manual.rst | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/docs/user-manual.rst b/docs/user-manual.rst index 373c638587..5d4bcd6f58 100644 --- a/docs/user-manual.rst +++ b/docs/user-manual.rst @@ -536,3 +536,60 @@ Admin C'est le module "backoffice" de GeoNature. Il permet notamment de gérer les permissions (CRUVED et autres filtres), les nomenclatures (typologies et vocabulaires) utilisées dans les différents modules de GeoNature ainsi que les champs additionnels. +Gestion des permissions +""""""""""""""""""""""" + +Depuis le version 2.13.0 de GeoNature, le système des permissions a été entièrement revu pour : +- pouvoir leur associer d'autres types de filtres (sensibilité notamment), +- les simplifier et clarifier en supprimant l'héritage et en définissant les permissions disponibles pour chaque module + +Le modèle de données des permissions et leur logique ayant été revu, il a fallu faire évoluer leur interface d'administration. + +Il a été retenu de réaliser cette nouvelle interface d'administration des permissions dans le module ADMIN existant de GeoNature. + +Il y est possible de lister toutes les permissions attribuées dans une instance GeoNature : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/2002df3e-733e-4894-b001-2b3608bb896e + +Il est possible de filtrer rapidement cette liste en saisissant un nom d'utilisateur ou de groupe, ou en appliquant un filtre par module, action, par utilisateur ou groupe... : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/8649033a-21cf-489d-b522-01f7b88333dc + +----------------------------- + +Il est possible de modifier, supprimer ou ajouter une nouvelle permission : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/c07beff6-197c-4f28-b8d1-43ead470b00d + +La liste des permissions ne contient que celles qui ont un réel usage car elles sont déclarées par chaque module. +Une fois que l'on a sélectionné un groupe ou utilisateur, la liste des permissions ne propose que des permissions qui n'ont pas été définies pour celui-ci, ou alors pour lesquelles on peut définir plusieurs permissions se combinant (Exemple du Read de la Synthèse pour lequel on peut créer une permission indiquant qu'un utilisateur voit toutes les données de son organisme sans filtre de sensibilité, mais qu'il voit toutes les données avec un filtre de sensibilité) : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/7aa6ec8c-2244-4a18-9af6-c11140af9afc + +Une fois qu'une permission a été selectionnée, si des filtres peuvent être appliqués à celle-ci dans ce module, alors les filtres sont affichés : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/6f90e1cc-d71d-44bd-81c8-47bc6dfe11d9 + +Si aucun filtre n'est sélectionné, alors la permission s'applique sur toutes les données concernées. + +---------------------------- + +Il est aussi possible d'afficher et de gérer les permissions par groupes ou par utilisateurs : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/1f59af83-683e-4e1b-ba85-95649558ea0f + +Quand on clique sur un groupe ou utilisateur pour en consulter le détail des permissions, toutes les permissions disponibles de tous les modules sont affichées : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/6cd94fc1-b597-423e-99de-c58e48291a0f + +Les permissions sur fond rouge, qui affichent uniquement un + indiquent que le groupe ou utilisateur n'a pas cette permission et qu'on peut lui ajouter en cliquant sur ce +. + +Les permissions dont disposent le groupe ou l'utilisateur sont indiquées en vert (si sans filtre) ou en bleu (si avec filtre) : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/6a3bb721-0741-4aec-b8ad-eb0bbeade675 + +------------------------------ + +Pour les utilisateurs sont listées les permissions qui lui sont attribués directement individuellement, mais aussi les permissions effectives qui s'appliquent à lui (selon les groupes auquel il appartient) : + +.. image :: https://github.com/PnX-SI/GeoNature/assets/4418840/75486b5c-a571-4c3a-9fd5-ff57328776c7 From e497a11f2b3d3f7bffba891b6244300a964bf568 Mon Sep 17 00:00:00 2001 From: omahs <73983677+omahs@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:24:49 +0200 Subject: [PATCH 02/24] Fix typos --- docs/admin-manual.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/admin-manual.rst b/docs/admin-manual.rst index 32769424a7..f1a305b9f3 100644 --- a/docs/admin-manual.rst +++ b/docs/admin-manual.rst @@ -75,7 +75,7 @@ Il est possible pour n’importe quelle dépendance ou module GeoNature de fourn … ) -Il est également possible de spécifier l’emplacement de révisions Alembic manuellement dans la configuration de GeoNature. Cela est nécessaire entre autre pour UsersHub afin de pouvoir manipuler son schéma alors que UsersHub n’est usuellemment pas installé dans le venv de GeoNature (seul UsersHub-authentification-module l’est) : +Il est également possible de spécifier l’emplacement de révisions Alembic manuellement dans la configuration de GeoNature. Cela est nécessaire entre autre pour UsersHub afin de pouvoir manipuler son schéma alors que UsersHub n’est usuellement pas installé dans le venv de GeoNature (seul UsersHub-authentification-module l’est) : .. code-block:: @@ -85,7 +85,7 @@ Il est également possible de spécifier l’emplacement de révisions Alembic m Chaque fichier de migration est caractérisé par : * un identifiant, `e.g.` ``f06cc80cc8ba`` -* une branche : Les branches permettent de séparer les fichiers de migrations afin de pouvoir les appliquer séparement. Par exemple, pour un déploiement de TaxHub sans GeoNature, il peut être intéressant de créer le schéma ``taxonomie`` sans créer les schémas de GeoNature, et ainsi gérer indépendamment les migrations de chaque schéma. +* une branche : Les branches permettent de séparer les fichiers de migrations afin de pouvoir les appliquer séparément. Par exemple, pour un déploiement de TaxHub sans GeoNature, il peut être intéressant de créer le schéma ``taxonomie`` sans créer les schémas de GeoNature, et ainsi gérer indépendamment les migrations de chaque schéma. * un ancêtre : Lorsqu’un fichier de migration représente l’évolution d’un état antérieur de la base de données, l’ancêtre indique dans quelle version la base de données doit se trouver avant d’appliquer le-dis fichier de migration. * des dépendances : Il est possible d’indiquer qu’une migration nécessite qu’une ou plusieurs autres migrations aient été préalablement appliquées. Par exemple, ceci permet d’indiquer que le schéma de GeoNature nécessite les schémas ``taxonomie`` et ``utilisateurs``. @@ -438,7 +438,7 @@ Récapitulatif - Dans GeoNature on peut attribuer à un role des actions possibles dans un module, sur lesquels on peut ajouter des filtres (définis dans la table ``gn_permissions.t_permissions``). - 6 actions sont possibles dans GeoNature : Create / Read / Update / Validate / Export / Delete (aka CRUVED). -- Différents types de filtre existent. Le plus courant est le filtre d'appartenace (portée) : 2 filtres d'appartenance sont attribuables à des actions : Mes données / Les données de mon organisme. La synthèse dispose aussi d'un filtre de sensibilité. +- Différents types de filtre existent. Le plus courant est le filtre d'appartenance (portée) : 2 filtres d'appartenance sont attribuables à des actions : Mes données / Les données de mon organisme. La synthèse dispose aussi d'un filtre de sensibilité. - Des fonctions PostgreSQL ont aussi été intégrées pour faciliter la récupération de ces informations (``gn_permissions.cruved_for_user_in_module``, ``gn_permissions.does_user_have_scope_permission``, ...) - Si un utilisateur n'a aucune permission sur un module, alors il ne lui sera pas affiché dans le menu latéral et il ne pourra pas y accéder - Il est aussi possible de ne pas utiliser UsersHub pour gérer les utilisateurs et de connecter GeoNature à un CAS (voir configuration). Actuellement ce paramétrage est fonctionnel en se connectant au CAS de l'INPN (MNHN) @@ -510,7 +510,7 @@ Pour lancer manuellement cette fonction, ouvrez une console SQL et exécutez la Cette fonction est aussi diponible en tant que fonction GeoNature qu'il est préférable d'utiliser : ``geonature profiles update`` -Pour automatiser l'éxecution de cette fonction (tous les jours à minuit dans cet exemple), :ref:`créer une tâche planfiée`. +Pour automatiser l'exécution de cette fonction (tous les jours à minuit dans cet exemple), :ref:`créer une tâche planfiée`. Usage ````` @@ -1021,7 +1021,7 @@ Supervision des services Maintenance """"""""""" -Lors d'une opération de maintenance (montée en version, modification de la base de données...), vous pouvez rendre l'application momentanémment indisponible. +Lors d'une opération de maintenance (montée en version, modification de la base de données...), vous pouvez rendre l'application momentanément indisponible. Pour cela, désactivez la configuration Apache de GeoNature, puis activez la configuration du mode de maintenance : @@ -1157,7 +1157,7 @@ Restauration * Restauration de la configuration et de la customisation : - - Décompresser les fichiers précedemment sauvegardés pour les remettre au bon emplacement : + - Décompresser les fichiers précédemment sauvegardés pour les remettre au bon emplacement : .. code-block:: console @@ -1267,7 +1267,7 @@ Intégrer des données Référentiel géographique """""""""""""""""""""""" -GeoNature est fourni avec des données géographiques de base sur la métropôle (MNT national à 250m et communes de métropôle). +GeoNature est fourni avec des données géographiques de base sur la métropole (MNT national à 250m et communes de métropole). **1.** Si vous souhaitez modifier le MNT pour mettre celui de votre territoire : @@ -1546,7 +1546,7 @@ Installer le module Le module est fourni par défaut avec l'installation de GeoNature. -Si vous l'avez supprimé, lancez les commandes suivantes depuis le repertoire ``backend`` de GeoNature +Si vous l'avez supprimé, lancez les commandes suivantes depuis le répertoire ``backend`` de GeoNature .. code-block:: console @@ -1816,7 +1816,7 @@ Bien que le module soit une copie d'Occtax, il est tout de même nécessaire de Associer des jeux de données et des champs additionnels ``````````````````````````````````````````````````````` -Dans le module Métadonnées (formulaire des jeux de données), associez les jeux de données que vous souhaitez rendre saissisables au nouveau module dupliqué. +Dans le module Métadonnées (formulaire des jeux de données), associez les jeux de données que vous souhaitez rendre saisissables au nouveau module dupliqué. Ajouter le nouveau module dans la liste des modules implémentés ``````````````````````````````````````````````````````````````` @@ -1902,7 +1902,7 @@ Base de données """"""""""""""" Le module s'appuie sur deux schémas.: -``ref_habitats``: Le réferentiel habitat du MNHN +``ref_habitats``: Le référentiel habitat du MNHN ``pr_occhab``: le schéma qui contient les données d'occurrence d'habitat, basé sur standard du MNHN Configuration @@ -2100,7 +2100,7 @@ En plus des observations brutes, il est possible d'effectuer un export des méta Deux champs sont cependant obligatoire dans la vue : -- ``jdd_id`` (qui corespond à l'id du JDD de la table ``gn_meta.t_datasets``). Le nom de ce champs est modifiable. Si vous le modifiez, éditez la variable ``EXPORT_METADATA_ID_DATASET_COL``. +- ``jdd_id`` (qui correspond à l'id du JDD de la table ``gn_meta.t_datasets``). Le nom de ce champs est modifiable. Si vous le modifiez, éditez la variable ``EXPORT_METADATA_ID_DATASET_COL``. - ``acteurs``: Le nom de ce champs est modifiable. Si vous le modifiez, éditez la variable ``EXPORT_METADATA_ACTOR_COL`` **Export des statuts taxonomiques (réglementations)** @@ -2193,7 +2193,7 @@ Une commande dans TaxHub permet de désactiver automatiquement les textes en deh Il s'agit du paramètre ``DEFAULT_FILTERS``. C'est un dictionnaire qui liste la valeur des champs par défaut. -Il faut fournir le code des nomenclature par default (liste de chaîne de caractère). +Il faut fournir le code des nomenclature par défaut (liste de chaîne de caractère). (On prend les champs en ``id_nomenclature_...`` et on remplace ``id_nomenclature_`` par ``cd_nomenclature_``) Exemple de filtres par défaut : From eb4d0679c4f2d1532c600c0361e54b70d65041e5 Mon Sep 17 00:00:00 2001 From: omahs <73983677+omahs@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:17:08 +0200 Subject: [PATCH 03/24] fix typos --- docs/FAQ.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/FAQ.rst b/docs/FAQ.rst index 3b261a6129..b9e14104c2 100644 --- a/docs/FAQ.rst +++ b/docs/FAQ.rst @@ -7,14 +7,14 @@ Problèmes liés au frontend Message d'erreur lors de la compilation du frontend """"""""""""""""""""""""""""""""""""""""""""""""""" -- **Probleme lié à Node-sass**:: +- **Problème lié à Node-sass**:: at module.exports (/home/myuser/geonature2/frontend/node_modules/node-sass/lib/binding.js:15:13) at Object. (/home/myuser/geonature2/frontend/node_modules/node-sass/lib/index.js:14:35) Lancer la commande : ``npm rebuild node-sass --force`` -- **Probleme de mémoire** +- **Problème de mémoire** Si vous avez un message d’erreur durant le build du frontend ressemblant à l’un des messages ci-dessous : From ef7bfcee75fc7129bfb56da0d3dd08d7eef6b12d Mon Sep 17 00:00:00 2001 From: Julien Corny Date: Wed, 6 Sep 2023 06:09:12 +0200 Subject: [PATCH 04/24] fixes nom_vern search frontend --- .../app/GN2CommonModule/form/taxonomy/taxonomy.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.scss b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.scss index 05a25bb3e5..075f21d621 100644 --- a/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.scss +++ b/frontend/src/app/GN2CommonModule/form/taxonomy/taxonomy.component.scss @@ -25,4 +25,5 @@ .dropdown-item { font-size: .8em; padding: 0.2rem; + white-space: normal; } From 2af6a8b6384063cbc8153ddbdc55c0c8a66c3409 Mon Sep 17 00:00:00 2001 From: Pierre Narcisi Date: Tue, 29 Aug 2023 15:19:28 +0200 Subject: [PATCH 05/24] fix(synthese) adding unnaccent to search_name --- backend/geonature/core/gn_synthese/routes.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/geonature/core/gn_synthese/routes.py b/backend/geonature/core/gn_synthese/routes.py index a49a3ee210..8a670cdb0c 100644 --- a/backend/geonature/core/gn_synthese/routes.py +++ b/backend/geonature/core/gn_synthese/routes.py @@ -796,7 +796,11 @@ def get_autocomplete_taxons_synthese(): .join(Synthese, Synthese.cd_nom == VMTaxrefListForautocomplete.cd_nom) ) search_name = search_name.replace(" ", "%") - q = q.filter(VMTaxrefListForautocomplete.unaccent_search_name.ilike("%" + search_name + "%")) + q = q.filter( + VMTaxrefListForautocomplete.unaccent_search_name.ilike( + func.unaccent("%" + search_name + "%") + ) + ) regne = request.args.get("regne") if regne: q = q.filter(VMTaxrefListForautocomplete.regne == regne) @@ -804,7 +808,6 @@ def get_autocomplete_taxons_synthese(): group2_inpn = request.args.get("group2_inpn") if group2_inpn: q = q.filter(VMTaxrefListForautocomplete.group2_inpn == group2_inpn) - q = q.order_by(desc(VMTaxrefListForautocomplete.cd_nom == VMTaxrefListForautocomplete.cd_ref)) limit = request.args.get("limit", 20) data = q.order_by(desc("idx_trgm")).limit(20).all() From 12dcea2ae4196e6c28e00a18ac697afae8109a18 Mon Sep 17 00:00:00 2001 From: TheoLechemia Date: Mon, 11 Sep 2023 11:16:07 +0200 Subject: [PATCH 06/24] bump usershub-auth --- backend/dependencies/UsersHub-authentification-module | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/dependencies/UsersHub-authentification-module b/backend/dependencies/UsersHub-authentification-module index 74bc9ddefc..69b5013edb 160000 --- a/backend/dependencies/UsersHub-authentification-module +++ b/backend/dependencies/UsersHub-authentification-module @@ -1 +1 @@ -Subproject commit 74bc9ddefcaeb3dd9674c6ace4c4ca5c801f347f +Subproject commit 69b5013edb97260f006487623677979eac337a6b From c07978ca18a6d91ad036a31852b84936f3fa653e Mon Sep 17 00:00:00 2001 From: TheoLechemia Date: Mon, 11 Sep 2023 11:19:35 +0200 Subject: [PATCH 07/24] use regular usershub auth module logout #2682 --- frontend/src/app/components/auth/auth.service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/app/components/auth/auth.service.ts b/frontend/src/app/components/auth/auth.service.ts index c51ca3ed30..92e49f00d2 100644 --- a/frontend/src/app/components/auth/auth.service.ts +++ b/frontend/src/app/components/auth/auth.service.ts @@ -128,7 +128,6 @@ export class AuthService { } logout() { - this.deleteAllCookies(); this.cleanLocalStorage(); this.cruvedService.clearCruved(); @@ -139,7 +138,7 @@ export class AuthService { // call the logout route to delete the session // TODO: in case of different cruved user in DEPOBIO context must run this routes // but actually make bug the INPN CAS deconnexion - this._http.get(`${this.config.API_ENDPOINT}/gn_auth/logout_cruved`).subscribe(() => { + this._http.get(`${this.config.API_ENDPOINT}/auth/logout`).subscribe(() => { location.reload(); }); // refresh the page to refresh all the shared service to avoid cruved conflict From 902124591deaedc1e08b57f286e2359e87be2806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Tue, 12 Sep 2023 17:13:25 +0200 Subject: [PATCH 08/24] add trailing / in nginx alias config This is necessary to serve GeoNature without prefix, and still compatible with a prefix. --- frontend/nginx.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/nginx.conf b/frontend/nginx.conf index 4a390a8ed6..2d255d6a1a 100644 --- a/frontend/nginx.conf +++ b/frontend/nginx.conf @@ -3,7 +3,7 @@ server { server_name ${NGINX_HOST}; location ${NGINX_LOCATION} { - alias /usr/share/nginx/html; + alias /usr/share/nginx/html/; index index.html index.htm; } } From 857f25fda5cf3e153df3cced436857864a580e2d Mon Sep 17 00:00:00 2001 From: "joel.clement" Date: Tue, 12 Sep 2023 16:13:34 +0200 Subject: [PATCH 09/24] bump taxhub 1.12.1 --- backend/dependencies/TaxHub | 2 +- backend/requirements-dependencies.in | 2 +- backend/requirements.txt | 2 +- install/install_all/install_all.ini | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/dependencies/TaxHub b/backend/dependencies/TaxHub index 7929f8e491..4855eec69b 160000 --- a/backend/dependencies/TaxHub +++ b/backend/dependencies/TaxHub @@ -1 +1 @@ -Subproject commit 7929f8e491945af83be4115f48a9dd91432e66bf +Subproject commit 4855eec69b698eda65dfcf24643e7e6ad99c8ebb diff --git a/backend/requirements-dependencies.in b/backend/requirements-dependencies.in index 01ebe009f7..0dc914604c 100644 --- a/backend/requirements-dependencies.in +++ b/backend/requirements-dependencies.in @@ -3,5 +3,5 @@ pypnnomenclature>=1.5.4,<2 pypn_habref_api>=0.3.2,<1 utils-flask-sqlalchemy-geo>=0.2.8,<1 utils-flask-sqlalchemy>=0.3.5,<1 -taxhub>=1.12.0,<2 +taxhub>=1.12.1,<2 pypn-ref-geo>=1.3.0,<2 diff --git a/backend/requirements.txt b/backend/requirements.txt index 2bad910c0f..b3b48657f2 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -295,7 +295,7 @@ sqlalchemy==1.3.24 # utils-flask-sqlalchemy # utils-flask-sqlalchemy-geo # wtforms-sqlalchemy -taxhub==1.12.0 +taxhub==1.12.1 # via # -r requirements-dependencies.in # pypnnomenclature diff --git a/install/install_all/install_all.ini b/install/install_all/install_all.ini index 99e02b2002..047c8c2c85 100644 --- a/install/install_all/install_all.ini +++ b/install/install_all/install_all.ini @@ -70,7 +70,7 @@ proxy_https= ### CONFIGURATION TAXHUB ### # Version de TaxHub -taxhub_release=1.12.0 +taxhub_release=1.12.1 # Pour des questions de performances de GeoNature, il n'y a pas de base de données spécifique pour TaxHub # Le schéma "taxonomie" de TaxHub est intégré dans la BDD de GeoNature pour que les requêtes ne soient pas trop pénalisées # par un accès à une BDD distante. From 8159206a6c9e476c7fbe6504c2a337cb44f3fdac Mon Sep 17 00:00:00 2001 From: "joel.clement" Date: Tue, 12 Sep 2023 16:13:57 +0200 Subject: [PATCH 10/24] dockerisation up Dockerfile & startup --- backend/Dockerfile | 7 +++---- install/assets/docker_startup.sh | 17 +++++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index aa45799087..3fbb5529a2 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -6,7 +6,6 @@ ENV PIP_ROOT_USER_ACTION=ignore RUN --mount=type=cache,target=/root/.cache \ pip install --upgrade pip setuptools wheel - FROM build AS build-habref WORKDIR /build/ COPY /backend/dependencies/Habref-api-module . @@ -114,12 +113,12 @@ RUN --mount=type=cache,target=/root/.cache \ pip install --upgrade pip setuptools wheel WORKDIR /dist -ENV GEONATURE_STATIC_PATH=/dist/static/ +ENV GEONATURE_STATIC_FOLDER=/dist/static/ COPY /backend/static/ ./static/ COPY --from=node /dist/node_modules/ ./static/node_modules/ -ENV GEONATURE_CUSTOM_STATIC_PATH=/dist/custom/ +ENV GEONATURE_CUSTOM_STATIC_FOLDER=/dist/custom/ RUN mkdir custom -ENV GEONATURE_MEDIA_PATH=/dist/media/ +ENV GEONATURE_MEDIA_FOLDER=/dist/media/ RUN mkdir -p media/attachments WORKDIR /dist/geonature diff --git a/install/assets/docker_startup.sh b/install/assets/docker_startup.sh index fce7099001..d00a3f38cc 100755 --- a/install/assets/docker_startup.sh +++ b/install/assets/docker_startup.sh @@ -1,18 +1,20 @@ #!/bin/bash # script /install/assert/docker_startup.sh -# fait appel à /install/03b_populate_db.sh (renommé /populate_db.sh dans le docker) +# ce script fait appel à /install/03b_populate_db.sh (renommé /populate_db.sh dans le docker) # pour lancer les migrations alembic et les commandes d'ajouts de donneés (taxref, sensibilité) -# si la variable d'environnement GEONATURE_POPULATE_DB est définie à True -# sinon il lance gunicorn directement +# sauf si la variable d'environnement GEONATURE_SKIP_POPULATE_DB est définie à True, +# dans ce cas il lance gunicorn directement set -o errexit set -o pipefail -set -o nounset # creer les tables et peupler la base -if [ "${GEONATURE_POPULATE_DB}" = true ]; then +if [ "${GEONATURE_SKIP_POPULATE_DB}" = true ]; then + # pass + : +else . /populate_db.sh if [ "$usershub" = true ]; then @@ -31,6 +33,8 @@ if [ "${GEONATURE_POPULATE_DB}" = true ]; then geonature db upgrade taxhub-admin@head fi fi + + geonature upgrade-modules-db fi # lancement de l'application @@ -38,4 +42,5 @@ gunicorn "geonature:create_app()" \ --name=geonature \ --workers=2 \ --threads=2 \ - --bind=0.0.0.0:8000 \ No newline at end of file + --bind=0.0.0.0:8000 \ + --reload --reload-extra-file="${GEONATURE_CONFIG_FILE}" \ No newline at end of file From 3d4325a366d740c5f9dfab2d2f9f25b88ec1d5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Tue, 12 Sep 2023 18:25:50 +0200 Subject: [PATCH 11/24] move db populate in entrypoint --- backend/Dockerfile | 11 +++++++++-- .../{docker_startup.sh => docker_entrypoint.sh} | 8 +------- 2 files changed, 10 insertions(+), 9 deletions(-) rename install/assets/{docker_startup.sh => docker_entrypoint.sh} (83%) diff --git a/backend/Dockerfile b/backend/Dockerfile index 3fbb5529a2..3a2808fbe7 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -139,13 +139,20 @@ COPY --from=build-utils-geo /build/dist/*.whl . COPY --from=build-geonature /build/dist/*.whl . COPY --chmod=755 /install/03b_populate_db.sh /populate_db.sh -COPY --chmod=755 /install/assets/docker_startup.sh /startup.sh +COPY --chmod=755 /install/assets/docker_entrypoint.sh /entrypoint.sh ENV GEONATURE_CONFIG_FILE "" EXPOSE 8000 -CMD ["/startup.sh"] +ENTRYPOINT ["/entrypoint.sh"] +CMD [ "gunicorn", "geonature:create_app()", \ + "--name=geonature", \ + "--workers=2", \ + "--threads=2", \ + "--access-logfile=-", \ + "--bind=0.0.0.0:8000" \ +] FROM wheels-light AS wheels diff --git a/install/assets/docker_startup.sh b/install/assets/docker_entrypoint.sh similarity index 83% rename from install/assets/docker_startup.sh rename to install/assets/docker_entrypoint.sh index d00a3f38cc..093201446c 100755 --- a/install/assets/docker_startup.sh +++ b/install/assets/docker_entrypoint.sh @@ -37,10 +37,4 @@ else geonature upgrade-modules-db fi -# lancement de l'application -gunicorn "geonature:create_app()" \ - --name=geonature \ - --workers=2 \ - --threads=2 \ - --bind=0.0.0.0:8000 \ - --reload --reload-extra-file="${GEONATURE_CONFIG_FILE}" \ No newline at end of file +exec "$@" From 61dcce5ce8ad1f30ec13da15dc05d786f8cb4b5a Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Wed, 13 Sep 2023 16:45:39 +0200 Subject: [PATCH 12/24] style: fix misspell in issue template --- .github/ISSUE_TEMPLATE/rapport-de-bug.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/rapport-de-bug.md b/.github/ISSUE_TEMPLATE/rapport-de-bug.md index d65f3ce9f9..97ea13eeb5 100644 --- a/.github/ISSUE_TEMPLATE/rapport-de-bug.md +++ b/.github/ISSUE_TEMPLATE/rapport-de-bug.md @@ -13,8 +13,8 @@ Version de GeoNature affectée par le bug. **Description du bug** Description du problème rencontré (message d’erreur, code HTTP de retour inattendu, …). -**Comportement attendue** -Description du comportement attendue en lieu et place du problème rencontré. +**Comportement attendu** +Description du comportement attendu en lieu et place du problème rencontré. **Comment reproduire** Étapes à suivre pour reproduire le problème (sur quelle page se rendre, sur quel bouton cliquer, avec quelles données présentes, …). From e66367d0604952a735630354b711a5345437b1fb Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 13 Sep 2023 17:59:32 +0200 Subject: [PATCH 13/24] Changelog 2.13.1 --- docs/CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c209f14a6e..8702b3ecea 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,24 @@ CHANGELOG ========= +2.13.1 (unreleased) +------------------- + +**🐛 Corrections** + +- Correction des déconnexions non effectives sur la 2.13.0 (#2682, par @TheoLechemia) +- Amélioration de l'affichage des taxons en passant à la ligne quand ils sont trop longs (#2690, par @JulienCorny) +- Amélioration du `Dockerfile` de GeoNature (#2623, par @joelclems et @bouttier) +- Correction de la configuration NGINX des préfixes quand GeoNature est déployé avec Docker (#2698, par @bouttier) +- [Synthèse] Correction de la recherche de taxon avec des accents (#2676) + +**📝 Documentation** + +- Documentation de la nouvelle interface d'administration des permissions (#2605, par @camillemonchicourt) +- Correction de petites fautes d'orthographe (#2674, par @omahs) +- Correction du template d'issue (#2700, par @mvergez) + + 2.13.0 - [Carpodacus erythrinus](https://www.ecrins-parcnational.fr/breve/roselin-gondouins) 🐤 (2023-08-23) ------------------------------------------------------------------------------------------------------------ From bd7fb5c8d8bee8bc6f039e28a599239c5cd7739d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Tue, 5 Sep 2023 21:37:18 +0200 Subject: [PATCH 14/24] do not retrive disabled modules from db This avoid polymorphic errors when a module is loaded from db but not known as not installed on python side. The fix is partial as modules are accessed at others places, like from permissions. --- backend/geonature/core/gn_commons/routes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/geonature/core/gn_commons/routes.py b/backend/geonature/core/gn_commons/routes.py index 16bf7b2fdc..6d8d7aff13 100644 --- a/backend/geonature/core/gn_commons/routes.py +++ b/backend/geonature/core/gn_commons/routes.py @@ -59,14 +59,14 @@ def list_modules(): """ params = request.args q = TModules.query.options(joinedload(TModules.objects)) + exclude = current_app.config["DISABLED_MODULES"] if "exclude" in params: - q = q.filter(TModules.module_code.notin_(params.getlist("exclude"))) + exclude.extend(params.getlist("exclude")) + q = q.filter(TModules.module_code.notin_(exclude)) q = q.order_by(TModules.module_order.asc()).order_by(TModules.module_label.asc()) modules = q.all() allowed_modules = [] for module in modules: - if module.module_code in current_app.config["DISABLED_MODULES"]: - continue module_allowed = False # HACK : on a besoin d'avoir le module GeoNature en front pour l'URL de la doc if module.module_code == "GEONATURE": From 8d405c1f838637bf7333d31a45eb03ece993bfc9 Mon Sep 17 00:00:00 2001 From: Pierre Narcisi Date: Mon, 28 Aug 2023 11:57:40 +0200 Subject: [PATCH 15/24] fix(synthese): fix color that changed --- .../synthese-results/synthese-carte/synthese-carte.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/syntheseModule/synthese-results/synthese-carte/synthese-carte.component.ts b/frontend/src/app/syntheseModule/synthese-results/synthese-carte/synthese-carte.component.ts index 35d23f25ca..a5fcaae3c3 100644 --- a/frontend/src/app/syntheseModule/synthese-results/synthese-carte/synthese-carte.component.ts +++ b/frontend/src/app/syntheseModule/synthese-results/synthese-carte/synthese-carte.component.ts @@ -355,6 +355,7 @@ export class SyntheseCarteComponent implements OnInit, AfterViewInit, OnChanges, private setAreasStyle(layer, obsNbr) { this.originAreasStyle['fillColor'] = this.getColor(obsNbr); layer.setStyle(this.originAreasStyle); + delete this.originAreasStyle['fillColor']; } private getColor(obsNbr) { From fedbf33c1b95b8947632e08fd5734c3fee767469 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Thu, 14 Sep 2023 15:06:04 +0200 Subject: [PATCH 16/24] =?UTF-8?q?Changelog=202.13.1=20-=20Compl=C3=A9ments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/CHANGELOG.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 8702b3ecea..6787dc3433 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,17 +4,25 @@ CHANGELOG 2.13.1 (unreleased) ------------------- -**🐛 Corrections** +**🚀 Nouveautés** -- Correction des déconnexions non effectives sur la 2.13.0 (#2682, par @TheoLechemia) - Amélioration de l'affichage des taxons en passant à la ligne quand ils sont trop longs (#2690, par @JulienCorny) - Amélioration du `Dockerfile` de GeoNature (#2623, par @joelclems et @bouttier) +- Ne pas renvoyer les modules désactivés dans la route `/modules` (#2693) +- Mise à jour de TaxHub en version 1.12.1 +- Mise à jour de Utils-Flask-SQLAlchemy en version 0.3.6 et UsersHub-authentification-module en version 1.6.10 (#2704) + +**🐛 Corrections** + +- Correction des déconnexions non effectives sur la 2.13.0 (#2682, par @TheoLechemia) - Correction de la configuration NGINX des préfixes quand GeoNature est déployé avec Docker (#2698, par @bouttier) -- [Synthèse] Correction de la recherche de taxon avec des accents (#2676) +- [Synthèse] Correction de la recherche de taxons avec des accents (#2676) +- [Synthèse] Correction des couleurs des mailles quand on clique sur différentes mailles successivement en mode maille (#2677) **📝 Documentation** - Documentation de la nouvelle interface d'administration des permissions (#2605, par @camillemonchicourt) +- Mise à jour de la documentation d'installation Docker suite à la sortie d'un Docker Compose complet et fonctionnel sur [GeoNature-Docker-services](https://github.com/PnX-SI/GeoNature-Docker-services/) (#2703) - Correction de petites fautes d'orthographe (#2674, par @omahs) - Correction du template d'issue (#2700, par @mvergez) @@ -74,8 +82,8 @@ CHANGELOG - Ajout d'un script `install/03b_populate_db_for_test.sh` pouvant être utilisé par la CI de test des modules GeoNature (#2544) - Ajout d'un script `install/assets/docker_startup.sh` pour lancer les migrations Alembic depuis le docker de GeoNature (#2544) - Création d'un fichier `install/assets/db/add_pg_extensions.sql` regroupant la création des extensions PostgreSQL (#2544) -- Amélioration de `APPLICATION_ROOT` pour qu'il fonctionne en mode développement (#2546) -- Amélioration des modèles de la Synthèse pour prendre en compte les valeurs par défaut des nomenclatures (#2524) +- ation de `APPLICATION_ROOT` pour qu'il fonctionne en mode développement (#2546) +- ation des modèles de la Synthèse pour prendre en compte les valeurs par défaut des nomenclatures (#2524) - Meilleure portabilité des scripts dans les différents systèmes Unix (#2435) - Mise à jour des dépendances Python (#2596) - Documentation de développement des permissions (#2585) @@ -108,7 +116,7 @@ Si vous mettez à jour GeoNature : - [Métadonnées] Correction des droits de modification des cadres d'acquisition - Correction du script `migration.sh` (#2525 par @bouttier) - Correction du downgrade d'une migration Alembic d'Occtax (#2500 par @JulienCorny) -- Correction et amélioration de la page de maintenance (#2535) +- Correction et ation de la page de maintenance (#2535) - Correction de la synchronisation des JDD et de l’association aux modules (#2532 par @VincentCauchois) **💻 Développement** @@ -155,7 +163,7 @@ Si vous utilisiez des champs additionnels avec des checkbox, lors de leur change **🐛 Corrections** -- Correction et améliorations des performances des recherches par statut de protection, notamment quand elles sont associées à une recherche géographique (#2450, par @amandine-sahl) +- Correction et ations des performances des recherches par statut de protection, notamment quand elles sont associées à une recherche géographique (#2450, par @amandine-sahl) - Correction d’une régression des performances lors de la récupération des JDD (#2462, par @mvergez) - Correction de jointures manquantes pour le calcule des permissions lors de la récupération des JDD (#2463, par @mvergez) - Correction des champs additionnels de type liste (#2447, par @TheoLechemia) @@ -172,7 +180,7 @@ Si vous utilisiez des champs additionnels avec des checkbox, lors de leur change - Affichage agrégé des observations dans la Synthèse (performances et lisibilité) (#1847 et #1878) - Filtres par défaut dans la Synthèse (#2261) - Optimisation des performances des exports de la Synthèse (#1434) -- Optimisation du chargement des jeux de données dans le module Métadonnées pour en améliorer les performances (#2004) +- Optimisation du chargement des jeux de données dans le module Métadonnées pour en er les performances (#2004) - Intégration par défaut de Taxref v16, BDC statuts v16 et référentiel de sensibilité v16 - Possibilité de gérer les tables des applications mobiles et des modules depuis le module "Admin" - Configuration dynamique sans rebuild (#2205) From a3629bcd941140e8079432c8aea566be68f53e01 Mon Sep 17 00:00:00 2001 From: TheoLechemia Date: Thu, 14 Sep 2023 10:24:44 +0200 Subject: [PATCH 17/24] bump dependencies --- VERSION | 2 +- backend/dependencies/RefGeo | 2 +- .../UsersHub-authentification-module | 2 +- backend/dependencies/Utils-Flask-SQLAlchemy | 2 +- backend/requirements-dependencies.in | 8 ++--- backend/requirements-dev.txt | 32 ++++++++++--------- backend/requirements.txt | 24 +++++++------- 7 files changed, 37 insertions(+), 35 deletions(-) diff --git a/VERSION b/VERSION index fb2c0766b7..53fdb123b9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.13.0 +2.13.1 \ No newline at end of file diff --git a/backend/dependencies/RefGeo b/backend/dependencies/RefGeo index 2272603a20..d17afaec89 160000 --- a/backend/dependencies/RefGeo +++ b/backend/dependencies/RefGeo @@ -1 +1 @@ -Subproject commit 2272603a20bd42a226b9eb24af59314d8b88f64d +Subproject commit d17afaec89dacf1edc47a64d629db64d07895907 diff --git a/backend/dependencies/UsersHub-authentification-module b/backend/dependencies/UsersHub-authentification-module index 69b5013edb..35427a1e80 160000 --- a/backend/dependencies/UsersHub-authentification-module +++ b/backend/dependencies/UsersHub-authentification-module @@ -1 +1 @@ -Subproject commit 69b5013edb97260f006487623677979eac337a6b +Subproject commit 35427a1e80c1e0fa00bd5e0ec7a007569ed5ddc3 diff --git a/backend/dependencies/Utils-Flask-SQLAlchemy b/backend/dependencies/Utils-Flask-SQLAlchemy index 106a75cc60..ef3bde348e 160000 --- a/backend/dependencies/Utils-Flask-SQLAlchemy +++ b/backend/dependencies/Utils-Flask-SQLAlchemy @@ -1 +1 @@ -Subproject commit 106a75cc608838f55288f42fdfe443da97be40a5 +Subproject commit ef3bde348e86b8a69d1dbc0a7b87a843eb7973db diff --git a/backend/requirements-dependencies.in b/backend/requirements-dependencies.in index 0dc914604c..41d6d37661 100644 --- a/backend/requirements-dependencies.in +++ b/backend/requirements-dependencies.in @@ -1,7 +1,7 @@ -pypnusershub>=1.6.9,<2 +pypnusershub>=1.6.10,<2 pypnnomenclature>=1.5.4,<2 pypn_habref_api>=0.3.2,<1 utils-flask-sqlalchemy-geo>=0.2.8,<1 -utils-flask-sqlalchemy>=0.3.5,<1 -taxhub>=1.12.1,<2 -pypn-ref-geo>=1.3.0,<2 +utils-flask-sqlalchemy>=0.3.6,<1 +taxhub>=1.12.0,<2 +pypn-ref-geo>=1.4.0,<2 diff --git a/backend/requirements-dev.txt b/backend/requirements-dev.txt index 7a06f60e53..0ab217e24f 100644 --- a/backend/requirements-dev.txt +++ b/backend/requirements-dev.txt @@ -37,14 +37,14 @@ # via # -r requirements-submodules.in # pypn-ref-geo -alembic==1.11.1 +alembic==1.12.0 # via # flask-migrate # pypn-ref-geo # pypnusershub amqp==5.1.1 # via kombu -async-timeout==4.0.2 +async-timeout==4.0.3 # via redis attrs==23.1.0 # via fiona @@ -56,23 +56,23 @@ billiard==3.6.4.0 # via celery blinker==1.6.2 # via flask-mail -boto3==1.28.2 +boto3==1.28.47 # via taxhub -botocore==1.31.2 +botocore==1.31.47 # via # boto3 # s3transfer cached-property==1.5.2 # via kombu -cairocffi==1.6.0 +cairocffi==1.6.1 # via # cairosvg # weasyprint -cairosvg==2.7.0 +cairosvg==2.7.1 # via weasyprint celery[redis]==5.2.7 # via -r requirements-common.in -certifi==2023.5.7 +certifi==2023.7.22 # via # fiona # requests @@ -83,7 +83,7 @@ cffi==1.15.1 # weasyprint charset-normalizer==3.2.0 # via requests -click==8.1.4 +click==8.1.7 # via # -r requirements-common.in # celery @@ -104,7 +104,7 @@ click-repl==0.3.0 # via celery cligj==0.7.2 # via fiona -cryptography==41.0.2 +cryptography==41.0.3 # via authlib cssselect2==0.7.0 # via @@ -156,7 +156,7 @@ flask-marshmallow==0.14.0 # pypn-habref-api # pypnnomenclature # pypnusershub -flask-migrate==4.0.4 +flask-migrate==4.0.5 # via # -r requirements-common.in # pypn-habref-api @@ -187,7 +187,7 @@ geojson==3.0.1 # via # -r requirements-common.in # utils-flask-sqlalchemy-geo -gunicorn==20.1.0 +gunicorn==21.2.0 # via # -r requirements-common.in # taxhub @@ -206,6 +206,7 @@ importlib-metadata==4.13.0 ; python_version < "3.10" # celery # click # flask + # gunicorn # kombu # mako # munch @@ -264,6 +265,7 @@ packaging==23.1 # via # -r requirements-common.in # geoalchemy2 + # gunicorn # marshmallow # marshmallow-sqlalchemy pillow==9.5.0 @@ -274,7 +276,7 @@ pillow==9.5.0 # weasyprint prompt-toolkit==3.0.39 # via click-repl -psycopg2==2.9.6 +psycopg2==2.9.7 # via # -r requirements-common.in # pypn-habref-api @@ -300,15 +302,15 @@ python-dotenv==0.21.1 # pypnnomenclature # taxhub # usershub -pytz==2023.3 +pytz==2023.3.post1 # via celery -redis==4.6.0 +redis==5.0.0 # via celery requests==2.31.0 # via # pypn-habref-api # pypnusershub -s3transfer==0.6.1 +s3transfer==0.6.2 # via boto3 shapely==1.8.5.post1 # via diff --git a/backend/requirements.txt b/backend/requirements.txt index b3b48657f2..6e9ae6e13b 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,14 +4,14 @@ # # pip-compile --resolver=backtracking requirements.in # -alembic==1.11.2 +alembic==1.12.0 # via # flask-migrate # pypn-ref-geo # pypnusershub amqp==5.1.1 # via kombu -async-timeout==4.0.2 +async-timeout==4.0.3 # via redis attrs==23.1.0 # via fiona @@ -23,9 +23,9 @@ billiard==3.6.4.0 # via celery blinker==1.6.2 # via flask-mail -boto3==1.28.21 +boto3==1.28.47 # via taxhub -botocore==1.31.21 +botocore==1.31.47 # via # boto3 # s3transfer @@ -50,7 +50,7 @@ cffi==1.15.1 # weasyprint charset-normalizer==3.2.0 # via requests -click==8.1.6 +click==8.1.7 # via # -r requirements-common.in # celery @@ -116,7 +116,7 @@ flask-marshmallow==0.14.0 # pypn-habref-api # pypnnomenclature # pypnusershub -flask-migrate==4.0.4 +flask-migrate==4.0.5 # via # -r requirements-common.in # pypn-habref-api @@ -237,13 +237,13 @@ pyphen==0.14.0 # via weasyprint pypn-habref-api==0.3.2 # via -r requirements-dependencies.in -pypn-ref-geo==1.3.0 +pypn-ref-geo==1.4.0 # via # -r requirements-dependencies.in # taxhub pypnnomenclature==1.5.4 # via -r requirements-dependencies.in -pypnusershub==1.6.9 +pypnusershub==1.6.10 # via # -r requirements-dependencies.in # pypnnomenclature @@ -259,15 +259,15 @@ python-dotenv==0.21.1 # pypn-ref-geo # pypnnomenclature # taxhub -pytz==2023.3 +pytz==2023.3.post1 # via celery -redis==4.6.0 +redis==5.0.0 # via celery requests==2.31.0 # via # pypn-habref-api # pypnusershub -s3transfer==0.6.1 +s3transfer==0.6.2 # via boto3 shapely==1.8.5.post1 # via @@ -317,7 +317,7 @@ urllib3==1.26.16 # botocore # requests # taxhub -utils-flask-sqlalchemy==0.3.5 +utils-flask-sqlalchemy==0.3.6 # via # -r requirements-dependencies.in # pypn-habref-api From d1bdabe95616233759f4b12822f6c92e8e0de4d3 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Thu, 14 Sep 2023 14:01:33 +0200 Subject: [PATCH 18/24] Review Docker installation documentation --- docs/installation-docker.rst | 45 +++++++++++++++--------------------- 1 file changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/installation-docker.rst b/docs/installation-docker.rst index ede8940b88..9104d478f2 100644 --- a/docs/installation-docker.rst +++ b/docs/installation-docker.rst @@ -1,28 +1,27 @@ Docker ****** -Depuis GeoNature 2.12, GeoNature fourni des images Docker pour le backend et le frontend. +L'installation de GeoNature avec Docker est la manière la plus simple de déployer GeoNature, ses 4 modules externes principaux (Import, Export, Dashboard, Monitoring), TaxHub et UsersHub, mais aussi de les mettre à jour, avec seulement quelques lignes de commandes. -.. warning:: +Elle permet aussi d'installer GeoNature sur différents systèmes, et pas uniquement sur Debian, comme c'est le cas avec l'installation classique. - Les images Docker sont encore récentes, non éprouvées et peu documentées. - Leur utilisation en production n’est de ce fait pas encore recommandée. +Elle peut néanmoins nécessiter de connaitre le fonctionnement de Docker pour ceux qui souhaitent aller plus loin et mettre en place une installation plus spécifique. +Docker Compose +-------------- -Prérequis ---------- - -* `Docker `_ +Pour déployer facilement GeoNature avec Docker, utilisez le Docker Compose proposé et documenté dans le dépôt `GeoNature-Docker-services `_. +Pour des déploiements Docker plus avancés et spécifiques, des images Docker des différents outils (GeoNature, TaxHub, UsersHub, GeoNature et ses 4 modules externes principaux) sont automatiquement construites et publiées à chaque nouvelle version publiée. Image backend ------------- -Des images pré-buildées sont présentes sur `github `_. +Des images pré-construites automatiquement sont présentes sur `Github `_. -Les images tagguées `-wheels` contiennent les wheels Python de GeoNature, de ses dépendances et modules contrib, de manière à pouvoir être enrichie avec vos wheels provenant de vos propres modules (images de type « builder »). +Les images tagguées `-wheels` contiennent les wheels Python de GeoNature, de ses dépendances et modules contrib, de manière à pouvoir être enrichies avec vos wheels provenant de vos propres modules (images de type « builder »). -Build manuel de l’image : +Construction manuelle de l’image : .. code-block:: bash @@ -31,28 +30,26 @@ Build manuel de l’image : --target=prod \ --tag=ghcr.io/pnx-si/geonature-backend:develop - Fonctionnement de l’image : * GeoNature attend sa configuration dans le dossier ``/dist/config`` (à monter dans un volume afin de pouvoir la modifier). L’emplacement du fichier de configuration peut également être précisé via la variable d’environnement ``GEONATURE_CONFIG_FILE``. * Il est également possible de fournir une configuration Python via la variable d’environnement ``GEONATURE_SETTINGS``. -* Les médias seront stocké dans le dossier ``/dist/media`` (à monter dans un volume afin de les sauvegarder). -* Toute variable d’environnement préfixée par ``GEONATURE_`` se verra traduit par un paramètre de configuration homonyme +* Les médias seront stockés dans le dossier ``/dist/media`` (à monter dans un volume afin de les sauvegarder). +* Toute variable d’environnement préfixée par ``GEONATURE_`` se verra traduite par un paramètre de configuration homonyme (`documentation Flask `_). - Si vous souhaitez définir une variable de configuration se trouvant dans une section, utilisé deux *underscore*. + Si vous souhaitez définir une variable de configuration se trouvant dans une section, utilisez deux *underscore*. Par exemple, pour définir le paramètre ``NB_LAST_OBS`` de la section ``[SYNTHESE]``, on définira une variable d’environnement ``GEONATURE_SYNTHESE__NB_LAST_OBS``. -* Pour peupler la base de données, référez vous au script ``install/03_create_db.sh``. - +* Pour peupler la base de données, référez-vous au script ``install/03_create_db.sh``. Image frontend -------------- -Des images pré-buildées sont présentes sur `github `_. +Des images pré-construites automatiquement sont présentes sur `Github `_. -Les images tagguées `-source` contiennent uniquement les sources de GeoNature et des modules contrib, et attendent d’être enrichie avec les sources de vos propres modules tandis que les images tagguées `-nginx` contiennent la configuration nginx prête à l’emploi pour GeoNature (images de type « builder »). +Les images tagguées `-source` contiennent uniquement les sources de GeoNature et des modules contrib, et attendent d’être enrichies avec les sources de vos propres modules tandis que les images tagguées `-nginx` contiennent la configuration NGINX prête à l’emploi pour GeoNature (images de type « builder »). -Build manuel de l’image : +Construction manuelle de l’image : .. code-block:: bash @@ -64,16 +61,10 @@ Build manuel de l’image : Fonctionnement de l’image : -* La configuration nginx de l’image est généré dynamiquement à son démarrage à partir des variables d’environnement suivantes : +* La configuration NGINX de l’image est générée dynamiquement à son démarrage, à partir des variables d’environnement suivantes : * ``NGINX_PORT`` (défaut : 80) * ``NGINX_HOST`` (défaut : localhost) * ``NGINX_LOCATION`` (défaut : /, à modifier pour servir GeoNature sur un préfixe) * La variable d’environnement ``API_ENDPOINT`` est lue au démarrage de l’image afin de mettre à jour le fichier de configuration du frontend ``assets/config.json``. - - -Docker Compose --------------- - -Une configuration Docker Compose est en cours de mise au point dans `la branche *docker-compose* du dépôt GeoNature-Docker-services `_. From ffeee7a7f89f44b7ff0e6a02d42de4feaa49f856 Mon Sep 17 00:00:00 2001 From: amandine-sahl Date: Fri, 15 Sep 2023 10:49:11 +0200 Subject: [PATCH 19/24] Bump Taxhub version 1.12.1 --- backend/requirements-dependencies.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/requirements-dependencies.in b/backend/requirements-dependencies.in index 41d6d37661..2c0a963d4c 100644 --- a/backend/requirements-dependencies.in +++ b/backend/requirements-dependencies.in @@ -3,5 +3,5 @@ pypnnomenclature>=1.5.4,<2 pypn_habref_api>=0.3.2,<1 utils-flask-sqlalchemy-geo>=0.2.8,<1 utils-flask-sqlalchemy>=0.3.6,<1 -taxhub>=1.12.0,<2 +taxhub>=1.12.1,<2 pypn-ref-geo>=1.4.0,<2 From de5700915971357e087e16b0f3039083f0b607a3 Mon Sep 17 00:00:00 2001 From: Pierre Narcisi Date: Thu, 14 Sep 2023 15:54:59 +0200 Subject: [PATCH 20/24] fix(synthese) changed required permissions to change report --- frontend/src/app/shared/alertInfoModule/alert-Info.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts b/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts index f7de01cf3c..048c7b7c0e 100644 --- a/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts +++ b/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts @@ -51,7 +51,7 @@ export class AlertInfoComponent implements OnInit, OnChanges { }); } ngOnChanges() { - this.canChangeAlert = this.userCruved?.V && this.userCruved?.V > 0 && !isEmpty(this.alert); + this.canChangeAlert = this.userCruved?.R && this.userCruved?.R > 0 && !isEmpty(this.alert); } /** * Create new alert with /reports GET service From e32d43e44137dc9144c786fe81a63c0057f7772b Mon Sep 17 00:00:00 2001 From: Pierre Narcisi Date: Fri, 15 Sep 2023 11:18:28 +0200 Subject: [PATCH 21/24] fix(validation) change the permission to validation R --- .../src/app/shared/alertInfoModule/alert-Info.component.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts b/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts index 048c7b7c0e..9f78949edc 100644 --- a/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts +++ b/frontend/src/app/shared/alertInfoModule/alert-Info.component.ts @@ -51,7 +51,10 @@ export class AlertInfoComponent implements OnInit, OnChanges { }); } ngOnChanges() { - this.canChangeAlert = this.userCruved?.R && this.userCruved?.R > 0 && !isEmpty(this.alert); + let moduleValidation = this.moduleService.getModule('VALIDATION'); + + this.canChangeAlert = + moduleValidation?.cruved?.R && moduleValidation?.cruved?.R > 0 && !isEmpty(this.alert); } /** * Create new alert with /reports GET service From bc7fc54b56cea0df2c8d53a36c553b30a9e06e72 Mon Sep 17 00:00:00 2001 From: Pierre Narcisi Date: Thu, 14 Sep 2023 11:07:45 +0200 Subject: [PATCH 22/24] fix(synthese) fix pin not working --- backend/geonature/core/gn_synthese/routes.py | 12 +++++++++++- .../synthese-info-obs/synthese-info-obs.component.ts | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/geonature/core/gn_synthese/routes.py b/backend/geonature/core/gn_synthese/routes.py index 8a670cdb0c..edf04e4722 100644 --- a/backend/geonature/core/gn_synthese/routes.py +++ b/backend/geonature/core/gn_synthese/routes.py @@ -1109,11 +1109,21 @@ def create_report(permissions): TReport.id_synthese == id_synthese, TReport.report_type.has(BibReportsTypes.type == type_name), ) + + user_pin = TReport.query.filter( + TReport.id_synthese == id_synthese, + TReport.report_type.has(BibReportsTypes.type == "pin"), + TReport.id_role == g.current_user.id_role, + ) # only allow one alert by id_synthese - if type_name in ["alert", "pin"]: + if type_name in ["alert"]: alert_exists = report_query.one_or_none() if alert_exists is not None: raise Conflict("This type already exists for this id") + if type_name in ["pin"]: + pin_exist = user_pin.one_or_none() + if pin_exist is not None: + raise Conflict("This type already exists for this id") new_entry = TReport( id_synthese=id_synthese, id_role=g.current_user.id_role, diff --git a/frontend/src/app/shared/syntheseSharedModule/synthese-info-obs/synthese-info-obs.component.ts b/frontend/src/app/shared/syntheseSharedModule/synthese-info-obs/synthese-info-obs.component.ts index 34619b7629..df471f4040 100644 --- a/frontend/src/app/shared/syntheseSharedModule/synthese-info-obs/synthese-info-obs.component.ts +++ b/frontend/src/app/shared/syntheseSharedModule/synthese-info-obs/synthese-info-obs.component.ts @@ -98,6 +98,7 @@ export class SyntheseInfoObsComponent implements OnInit, OnChanges { loadAllInfo(idSynthese) { this.isLoading = true; + this.getReport('pin'); this._dataService .getOneSyntheseObservation(idSynthese) .pipe( @@ -108,7 +109,6 @@ export class SyntheseInfoObsComponent implements OnInit, OnChanges { .subscribe((data) => { this.selectedObs = data['properties']; this.alert = find(data.properties.reports, ['report_type.type', 'alert']); - this.pin = find(data.properties.reports, ['report_type.type', 'pin']); this.selectCdNomenclature = this.selectedObs?.nomenclature_valid_status.cd_nomenclature; this.selectedGeom = data; this.selectedObs['municipalities'] = []; @@ -341,8 +341,9 @@ export class SyntheseInfoObsComponent implements OnInit, OnChanges { pinSelectedObs() { if (isEmpty(this.pin)) { this.addPin(); + } else { + this.deletePin(); } - this.deletePin(); } copyToClipBoard() { From a86c81e936b61c0b89b5dd8a3952e9386ebfae7d Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 15 Sep 2023 12:06:32 +0200 Subject: [PATCH 23/24] Changelog 2.13.1 --- docs/CHANGELOG.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 6787dc3433..5621818727 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,27 +1,33 @@ CHANGELOG ========= -2.13.1 (unreleased) +2.13.1 (2023-09-15) ------------------- +L'installation de GeoNature (ainsi que ses 4 modules externes principaux, TaxHub et UsersHub) avec Docker est désormais complet et fonctionnel. Voir la documentation sur https://docs.geonature.fr/installation.html#docker. +C'est la manière la plus simple de déployer GeoNature avec ses 4 modules externes principaux (Import, Export, Dashboard, Monitoring) mais aussi de les mettre à jour, avec seulement quelques lignes de commandes, à partir des images construites automatiquement et du fichier `docker-compose` global, fourni dans le dépôt [GeoNature-Docker-services](https://github.com/PnX-SI/GeoNature-Docker-services). + **🚀 Nouveautés** - Amélioration de l'affichage des taxons en passant à la ligne quand ils sont trop longs (#2690, par @JulienCorny) - Amélioration du `Dockerfile` de GeoNature (#2623, par @joelclems et @bouttier) -- Ne pas renvoyer les modules désactivés dans la route `/modules` (#2693) -- Mise à jour de TaxHub en version 1.12.1 -- Mise à jour de Utils-Flask-SQLAlchemy en version 0.3.6 et UsersHub-authentification-module en version 1.6.10 (#2704) +- Ne pas renvoyer les modules désactivés dans la route `/modules` (#2693, par @bouttier) +- Mise à jour de TaxHub en version 1.12.1 (#2623, par @joelclems) +- Mise à jour de Utils-Flask-SQLAlchemy en version 0.3.6 et UsersHub-authentification-module en version 1.6.10 (#2704, par @TheoLechemia) +- Mise à jour de différentes dépendances Python (#2704, par @TheoLechemia) **🐛 Corrections** - Correction des déconnexions non effectives sur la 2.13.0 (#2682, par @TheoLechemia) - Correction de la configuration NGINX des préfixes quand GeoNature est déployé avec Docker (#2698, par @bouttier) -- [Synthèse] Correction de la recherche de taxons avec des accents (#2676) -- [Synthèse] Correction des couleurs des mailles quand on clique sur différentes mailles successivement en mode maille (#2677) +- Correction des permissions vérifiées pour pouvoir supprimer un signalement en prenant en compte le R du module Validation, et non pas le V du module Synthèse (#2705, par @Pierre-Narcisi) +- Correction de l'épinglage des observations qui était encore partagé entre utilisateurs, et non pas individuels (#2702, par @Pierre-Narcisi) +- [Synthèse] Correction de la recherche de taxons avec des accents (#2676, par @Pierre-Narcisi) +- [Synthèse] Correction des couleurs des mailles quand on clique sur différentes mailles successivement en mode maille (#2677, par @Pierre-Narcisi) **📝 Documentation** -- Documentation de la nouvelle interface d'administration des permissions (#2605, par @camillemonchicourt) +- Documentation de la nouvelle interface d'administration des permissions (#2605, par @camillemonchicourt), disponible sur https://docs.geonature.fr/user-manual.html#admin - Mise à jour de la documentation d'installation Docker suite à la sortie d'un Docker Compose complet et fonctionnel sur [GeoNature-Docker-services](https://github.com/PnX-SI/GeoNature-Docker-services/) (#2703) - Correction de petites fautes d'orthographe (#2674, par @omahs) - Correction du template d'issue (#2700, par @mvergez) From 584af3f1afd19b723e64313ab509bc4a80e2fc71 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Fri, 15 Sep 2023 12:07:26 +0200 Subject: [PATCH 24/24] Bump GN release in install_all / 2.13.1 --- install/install_all/install_all.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/install_all/install_all.ini b/install/install_all/install_all.ini index 047c8c2c85..89238388fb 100644 --- a/install/install_all/install_all.ini +++ b/install/install_all/install_all.ini @@ -32,7 +32,7 @@ usershub_release=2.3.4 ### CONFIGURATION GEONATURE ### # Version de GeoNature -geonature_release=2.13.0 +geonature_release=2.13.1 # Effacer la base de données GeoNature existante lors de la réinstallation drop_geonaturedb=false # Nom de la base de données GeoNature