MTES-MCT / metadata-postgresql

Plume : gestion des métadonnées du patrimoine PostgreSQL
https://mtes-mct.github.io/metadata-postgresql/
GNU Affero General Public License v3.0
1 stars 1 forks source link

Gestion locale des modèles pré-configurés #17

Closed alhyss closed 2 years ago

alhyss commented 2 years ago

En principe, les modèles pré-configurés sont - comme tous les modèles - chargés depuis le serveur PostgreSQL par une série de requête sur les tables de l'extension PlumePg. Cela signifie que si l'extension PlumePg n'est pas installée sur la base cible aucun modèle ne sera disponible dans l'interface QGIS de Plume, pas même les modèles pré-configurés. Ce n'est pas une situation très confortable, spécialement en mode édition où toutes les catégories communes sont alors présentées dans le formulaire.

Il paraîtrait intéressant que, dans le cas où PlumePg n'est pas installée, Plume puisse récupérer en local la définition des modèles pré-configurés.

alhyss commented 2 years ago

Salut @WREATCHED ! C'est prêt de mon côté pour la gestion en local des modèles pré-configurés.

Le principe, c'est que tu récupères la définition de l'ensemble des modèles en générant un objet plume.pg.template.LocalTemplatesCollection (à faire une fois pour toute lorsque tu es pour la première fois confronté à une base sans PlumePg). Il se comporte comme un dictionnaire dont les clés sont les noms des modèles et les valeurs les objets plume.pg.template.TemplateDict que le constructeur de plume.rdf.widgetsdict.WidgetsDict attend pour son argument template.

Pour ce qui est de l'éventuel modèle à appliquer automatiquement à l'ouverture de la fiche, il y a toujours besoin d'une requête sur le serveur prenant en arguments le nom de la table et le nom du schéma, mais elle est générée par une fonction différente, plume.pg.queries.query_evaluate_local_templates.

Tout ça est expliqué plus en détail dans Avec les modèles stockés en local. N'hésite pas si ce n'est pas clair.

alhyss commented 2 years ago

J'ai corrigé mon problème d'appel à une fonction qui n'existe pas en l'absence de PlumePg... En conséquence, la syntaxe d'appel à plume.pg.queries.query_evaluate_local_templates change.

Il faut désormais :

query = queries.query_evaluate_local_templates(templates_collection, schema_name, table_name)
cur.execute(*query)

au lieu de :

query = queries.query_evaluate_local_templates(templates_collection)
cur.execute(query, (schema_name, table_name))
alhyss commented 2 years ago

Implémenté par @WREATCHED pour la v0.3 bêta.