Skip to content

Commit

Permalink
Merge pull request #201 from MTES-MCT/plume_pg-0.3.1
Browse files Browse the repository at this point in the history
Plume v1.2.1
  • Loading branch information
alhyss authored May 24, 2024
2 parents 1ecfb67 + 78a61fb commit 7bdb99c
Show file tree
Hide file tree
Showing 23 changed files with 2,951 additions and 74 deletions.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,16 +62,16 @@ Documentation utilisateur : https://snum.scenari-community.org/Plume/Documentati

## Crédits

© République Française, 2022-2023.
© République française, 2022-2024.

### Éditeur

Direction du numérique du Ministère de la Transition écologique et de la Cohésion des territoires, du Ministère de la Transition énergétique et du Secrétariat d'État chargé de la Mer.
Direction du Numérique du ministère de la Transition écologique et de la Cohésion des territoires.

### Équipe
### Auteurs

- Didier LECLERC (DNUM/UNI/DRC) : intégration, développement de l'interface utilisateur et de l'interface avec le serveur PostgreSQL, rédaction de la documentation utilisateur.
- Leslie LEMAIRE (DNUM/UNI/DRC) : conception et développement des mécaniques sous-jacentes (modules [plume.rdf](plume/rdf), [plume.pg](plume/pg) et [plume.iso](plume/iso)), création des logos et icônes, rédaction de la documentation technique et de la documentation utilisateur.
- Didier Leclerc : intégration, développement de l'interface utilisateur et de l'interface avec le serveur PostgreSQL, rédaction de la documentation utilisateur.
- Leslie Lemaire : conception et développement des mécaniques sous-jacentes (modules [plume.rdf](plume/rdf), [plume.pg](plume/pg) et [plume.iso](plume/iso)), création des logos et icônes, rédaction de la documentation technique et de la documentation utilisateur.

## Contact

Expand Down
16 changes: 15 additions & 1 deletion admin/consistency.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from plume.pg import queries
from plume.pg.template import dump_template_data
from plume.rdf.utils import abspath, data_from_file
from plume.config import SAMPLE_TEMPLATES
from plume.config import SAMPLE_TEMPLATES, PLUME_VERSION, PLUME_VERSION_TPL
from plume import __path__ as plume_path

from plume import mapping_templates
Expand Down Expand Up @@ -171,5 +171,19 @@ def test_mapping_templates_attributes(self):
with self.subTest(loc_attname=loc_attname):
self.assertTrue(loc_attname in pg_attnames)

def test_plume_config_versions_consistency(self):
"""Vérifie que les numéros de version de Plume renseignés dans le fichier de configuration sont cohérents entre eux."""
v = f'v{PLUME_VERSION_TPL[0]}.{PLUME_VERSION_TPL[1]}.{PLUME_VERSION_TPL[2]}'
self.assertTrue(PLUME_VERSION == v or PLUME_VERSION.startswith(f'{v}-'))

def test_plume_metadata_version_consistency(self):
"""Vérifie que le numéro de version renseigné dans le fichier metadata.txt est cohérent avec celui du fichier de configuration."""
metadata = data_from_file(abspath('metadata.txt'))
v = PLUME_VERSION.lstrip('v')
self.assertIn(
f'version={v}',
metadata
)

if __name__ == '__main__':
unittest.main()
4 changes: 2 additions & 2 deletions admin/debian/DEBIAN/control
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ Version: #PKG_VERSION#
Section: libs
Priority: optional
Architecture: all
Depends: postgresql-10|postgresql-11|postgresql-12|postgresql-13|postgresql-14|postgresql-15
Depends: postgresql-10|postgresql-11|postgresql-12|postgresql-13|postgresql-14|postgresql-15|postgresql-16
Installed-Size: 500
Maintainer: Leslie Lemaire (MTECT-MTE-SEMer/SG/DNUM/UNI/DRC) <[email protected]>
Maintainer: Leslie Lemaire (MTECT/SG/DNUM/UNI/DRC) <[email protected]>
Description: Extension PostgreSQL PlumePg
PlumePg complète le plugin QGIS Plume, outil de consultation et saisie des métadonnées
du patrimoine en base PostgreSQL. Elle permet notamment à l'administrateur du serveur
Expand Down
13 changes: 4 additions & 9 deletions admin/debian/doc/changelog
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
plume_pg (0.3.0) stable; urgency=high
plume_pg (0.3.1) stable; urgency=critical

* Compatibilité avec Plume v1.0.0 et son schéma de métadonnées communes.
* Remplacement de la table partitionnée z_plume.meta_categorie par une vue pour prévenir des erreurs de segmentation à la sauvegarde.
Pour plus de détails : <https://mtes-mct.github.io/metadata-postgresql/changelog/v1_2_1.html>

* Nouveau modèle pré-configuré "INSPIRE" et amélioration des modèles existants.

* Ajout d'une fonction z_plume.stamp_create_triggers pour activer massivement l'enregistrement des dates de modification des tables d'un ou plusieurs schémas.

Pour plus de détails : <https://mtes-mct.github.io/metadata-postgresql/changelog/v1_0_0.html>

-- Leslie Lemaire (MTECT-MTE-SEMer/SG/DNUM/UNI/DRC) <[email protected]> Mon, 19 Jun 2023 08:10:00 +0200
-- Leslie Lemaire (MTECT/SG/DNUM/UNI/DRC) <[email protected]> Fri, 24 May 2024 10:00:00 +0200
2 changes: 1 addition & 1 deletion admin/debian/doc/copyright
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Upstream-Contact: <[email protected]>
Source: https://github.com/MTES-MCT/metadata-postgresql

Files: *
Copyright: 2020-2023, République Française, Secrétariat général du Ministère de la Transition écologique et de la Cohésion des territoires, du Ministère de la Transition énergétique et du Secrétariat d'Etat à la Mer, Direction du numérique
Copyright: 2020-2024, République française, direction du Numérique du ministère de la Transition écologique et de la Cohésion des territoires
License: AGPL-3.0-or-later
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Expand Down
7 changes: 3 additions & 4 deletions admin/plume_pg.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,16 @@ def query_from_shape(do_not_print=False):
Returns
-------
str
Requête ``INSERT`` sur la table ``z_plume.meta_categorie``
de l'extension (qui mettra à jour la partition
``z_plume.meta_shared_categorie``).
Requête ``INSERT`` sur la table ``z_plume.meta_shared_categorie``
de l'extension.
"""
connection_string = ConnectionString()

t = table_from_shape()

conn = connect(connection_string)
s = sql.SQL("""INSERT INTO z_plume.meta_categorie (
s = sql.SQL("""INSERT INTO z_plume.meta_shared_categorie (
path, origin, label, description, special,
is_node, datatype, is_long_text, rowspan,
placeholder, input_mask, is_multiple, unilang,
Expand Down
1 change: 1 addition & 0 deletions docs/changelog/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Notes de version
.. toctree::
:maxdepth: 1

v1_2_1
v1_2_0
v1_1_1
v1_1_0
Expand Down
31 changes: 31 additions & 0 deletions docs/changelog/v1_2_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Version corrective 1.2.1

*Date de publication : 24 mai 2024.*

*Sur GitHub : [https://github.com/MTES-MCT/metadata-postgresql/releases/tag/v1.2.1](https://github.com/MTES-MCT/metadata-postgresql/releases/tag/v1.2.1).*

Plume v1.2.1 est une version corrective, accompagnée d'une nouvelle version de l'extension PostgreSQL PlumePg.

**La mise à jour de PlumePg en version 0.3.1 est très fortement recommandée,** et obligatoire pour que le plugin QGIS Plume continue à détecter les modèles personnalisés.

## PlumePg v1.3.1

La table partitionnée `z_plume.meta_categorie` de l'extension PlumePg (catégories de métadonnées) devient une vue éditable, alimentée par les deux tables `z_plume.meta_shared_categorie` (catégories communes) et `z_plume.meta_local_categorie` (catégories locales).

Toutes les opérations antérieurement possibles sur la table partitionnée restent réalisables via la vue.

Cette évolution vise à éliminer l'une des conditions d'apparition d'une erreur de segmentation qui, dans certaines conditions, pouvait se produire lors des sauvegardes de bases. Elle avait notamment été constatée sur les serveurs EOLE PostgreSQL 12 où PlumePg était active, et elle empêchait la sauvegarde des bases concernées.

*Référence : [issue #198](https://github.com/MTES-MCT/metadata-postgresql/issues/198).*

## Service CSW de la Géoplateforme

Mise à jour de la liste des services présentés par défaut dans l'interface d'import d'une fiche de métadonnée via un service CSW INSPIRE. Le [service du Géoportail IGN](https://geoservices.ign.fr/documentation/services/services-deprecies/services-de-recherche-csw-ogc), désormais déprécié, est remplacé par [celui de la Géoplateforme](https://geoservices.ign.fr/documentation/services/services-geoplateforme/metadonnees).

*Référence : [issue #199](https://github.com/MTES-MCT/metadata-postgresql/issues/199).*

## Tests

Le tests de PlumePg v0.3.1 et des packages `plume.iso`, `plume.rdf`, `plume.pg` de Plume v1.2.1 ont été réalisés avec [Python](https://www.python.org/) 3.10.5, [psycopg2](https://pypi.org/project/psycopg2/) 2.9.3, [RDFLib](https://pypi.org/project/rdflib/) 7.0.0, [pyparsing](https://pypi.org/project/pyparsing/) 3.0.9, [Asgard](https://github.com/MTES-MCT/asgard-postgresql) 1.4.0, [pgcrypto](https://www.postgresql.org/docs/current/pgcrypto.html) 1.3, [isodate](https://pypi.org/project/isodate/) 0.6.1, [six](https://pypi.org/project/six/) 1.16.0 et [PostgreSQL](https://www.postgresql.org/) 10.12, 11.9, 12.4, 13.0, 14.2, 15.0 et 16.0.

Les contrôles manuels de l'interface du plugin QGIS ont été effectués sous QGIS 3.34.2.
8 changes: 4 additions & 4 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
import sys
sys.path.insert(0, os.path.abspath('../.'))

from plume.config import PLUME_VERSION
from plume.config import PLUME_VERSION, PUBLISHER, COPYRIGHT, APP_NAME


# -- Project information -----------------------------------------------------

project = 'Plume'
copyright = '2023, République française'
author = "Didier Leclerc et Leslie Lemaire, Direction du numérique du Ministère de la Transition écologique et de la Cohésion des territoires, du Ministère de la Transition énergétique et du Secrétariat d'État chargé de la Mer"
project = APP_NAME
copyright = COPYRIGHT
author = PUBLISHER

# The full version, including alpha/beta/rc tags
release = PLUME_VERSION
Expand Down
4 changes: 2 additions & 2 deletions docs/mechanism/memo.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ La liste des métadonnées communes présentée dans le fichier [`/docs/usage/me

### Mise à jour des catégories communes dans les scripts de *PlumePg*

La commande suivante permet de générer la commande `INSERT` qui ajoute toutes les métadonnées communes à la table `z_plume.meta_categorie` :
La commande suivante permet de générer la commande `INSERT` qui ajoute toutes les métadonnées communes à la table `z_plume.meta_shared_categorie` :

```python

Expand Down Expand Up @@ -225,7 +225,7 @@ La valeur est un tuple dont le premier élément est le nom qui sera systématiq

### Extension *PlumePg*

Le plus souvent, une nouvelle option de configuration se manifestera dans *PlumePg* par un champ supplémentaire dans les tables `z_plume.meta_categorie` (ainsi que ses partitions `z_plume.meta_shared_categorie` et `z_plume.meta_local_categorie`) et `z_plume.meta_template_categories`, ainsi que la vue `z_plume.meta_template_categories_full`. Autant que possible, le nom du champ sera identique au nom python de l'option de configuration correspondante (le premier élément du tuple de `prop_map` évoqué dans le paragraphe précédent), soit `geo_tools` pour l'exemple considéré.
Le plus souvent, une nouvelle option de configuration se manifestera dans *PlumePg* par un champ supplémentaire dans la vue `z_plume.meta_categorie` (ainsi que ses tables sources `z_plume.meta_shared_categorie` et `z_plume.meta_local_categorie`) et `z_plume.meta_template_categories`, ainsi que la vue `z_plume.meta_template_categories_full`. Autant que possible, le nom du champ sera identique au nom python de l'option de configuration correspondante (le premier élément du tuple de `prop_map` évoqué dans le paragraphe précédent), soit `geo_tools` pour l'exemple considéré.

Si le champ n'admet que des valeurs pré-déterminées, on pourra définir un type énuméré semblable à `z_plume.meta_datatype`. Si le champ admet un tableau de valeurs pré-déterminées, alors il importe de définir non seulement le type énuméré, mais aussi de créer un cast implicite permettant de convertir un tableau de valeur textuel en tableau de ce type :

Expand Down
18 changes: 9 additions & 9 deletions docs/usage/gestion_plume_pg.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ L'extension PostgreSQL *PlumePg* est un composant optionnel de Plume, qui ouvre

| Version | Compatibilité | Remarques | Modalités de test |
| --- | --- | --- | --- |
| PostgreSQL <= 9.6 | non | *PlumePg* requiert la prise en charge des tables partitionnées, introduites par PostgreSQL 10. | |
| PostgreSQL 10 | oui | Nécessite l'extension `pgcrypto`. | 2023.06.16. PostgreSQL 10.12 + PlumePg 0.3.0 + pgcrypto 1.3 + Asgard 1.4.0[^withasgard]. |
| PostgreSQL 11 | oui | Nécessite l'extension `pgcrypto`. | 2023.06.16. PostgreSQL 11.9 + PlumePg 0.3.0 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 12 | oui | Nécessite l'extension `pgcrypto`. | 2023.06.16. PostgreSQL 12.4 + PlumePg 0.3.0 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 13 | oui | | 2023.06.16. PostgreSQL 13.0 + PlumePg 0.3.0 + pgcrypto 1.3[^withcrypto] + Asgard 1.4.0. |
| PostgreSQL 14 | oui | | 2023.06.16. PostgreSQL 14.2 + PlumePg 0.3.0 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 15 | oui | | 2023.06.16. PostgreSQL 15.0 + PlumePg 0.3.0 + pgcrypto 1.3 + Asgard 1.4.0. |

[^withasgard]: L'extension PostgreSQL *Asgard* n'est en aucune façon requise pour utiliser Plume et *PlumePg*. Les tests faisant intervenir *Asgard* s'assure simplement que, dans le cas où les deux extensions sont présentes, *Asgard* gère correctement les droits sur les objets de *PlumePg*. Cf. [Cohabitation avec *Asgard*](#cohabitation-avec-asgard)
| PostgreSQL 10 | oui | Nécessite l'extension `pgcrypto`. | 2024.05.23. PostgreSQL 10.12 + PlumePg 0.3.1 + pgcrypto 1.3 + Asgard 1.4.0[^withasgard]. |
| PostgreSQL 11 | oui | Nécessite l'extension `pgcrypto`. | 2024.05.23. PostgreSQL 11.9 + PlumePg 0.3.1 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 12 | oui | Nécessite l'extension `pgcrypto`. | 2024.05.23. PostgreSQL 12.4 + PlumePg 0.3.1 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 13 | oui | | 2024.05.23. PostgreSQL 13.0 + PlumePg 0.3.1 + pgcrypto 1.3[^withcrypto] + Asgard 1.4.0. |
| PostgreSQL 14 | oui | | 2024.05.23. PostgreSQL 14.2 + PlumePg 0.3.1 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 15 | oui | | 2024.05.23. PostgreSQL 15.0 + PlumePg 0.3.1 + pgcrypto 1.3 + Asgard 1.4.0. |
| PostgreSQL 16 | oui | *Asgard* n'est à ce jour pas disponible sous PostgreSQL 16. | 2024.05.23. PostgreSQL 16.0 + PlumePg 0.3.1 + pgcrypto 1.3 |

[^withasgard]: L'extension PostgreSQL *Asgard* n'est en aucune façon requise pour utiliser Plume et *PlumePg*. Les tests faisant intervenir *Asgard* s'assure simplement que, dans le cas où les deux extensions sont présentes, *Asgard* gère correctement les droits sur les objets de *PlumePg*. Cf. [Cohabitation avec *Asgard*](#cohabitation-avec-asgard).

[^withcrypto]: Les tests sont réalisés avec le fichier de contrôle standard de *PlumePg*, unique pour toutes les versions de PostgreSQL et qui requiert `pgcrypto`. Il est donc vérifié que celui-ci peut être installé pour toutes les versions, y compris PostgreSQL 13, 14 et 15, pour lesquelles *PlumePg* n'utilise ensuite aucune de ses fonctionnalités.

Expand Down
2 changes: 1 addition & 1 deletion docs/usage/metadonnees_calculees.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Les catégories pour lesquelles le calcul est proposé sont, à ce stade :

[^activation-suivi-dates]: Il est également recommandé d'avoir [activé les fonctionnalités d'enregistrement des dates](#activation-de-lenregistrement-des-dates), sans quoi le calcul ne renverra jamais rien.

Les paramètres optionnels sont spécifiés via le champ `compute_params` des tables `z_plume.meta_categorie` et `z_plume.meta_template_categories`. Il s'agit d'un champ de type `jsonb`, qui attend un dictionnaire dont les clés sont les noms des paramètres et dont les valeurs sont les valeurs des paramètres.
Les paramètres optionnels sont spécifiés via le champ `compute_params` de `z_plume.meta_categorie` et `z_plume.meta_template_categories`. Il s'agit d'un champ de type `jsonb`, qui attend un dictionnaire dont les clés sont les noms des paramètres et dont les valeurs sont les valeurs des paramètres.

Par exemple :

Expand Down
Loading

0 comments on commit 7bdb99c

Please sign in to comment.