Closed WREATCHED closed 9 months ago
@WREATCHED Normalement ça devrait être bon pour les fonctions de lecture. Avec un fetchall
sur le résultat de la requête, tu auras toujours une liste de tuples, mais chaque tuple contient un unique dictionnaire dont les clés sont les noms des champs de la table.
Quelque chose de cette forme :
[
(
{
'tab': 'Onglet n°1',
'tab_num': 1
}
),
(
{
'tab': 'Onglet n°2',
'tab_num': 2
}
)
]
@WREATCHED Il y aura des choses à affiner, mais tu devrais avoir une bonne base pour travailler avec ce que j'ai préparé, maintenant...
Tu as une fonction pour savoir si l'utilisateur peut gérer les modèles, des fonctions pour récupérer les données des modèles, des fonctions pour les modifier (insertion/mise à jour d'une part, suppression d'autre part), et des fonctions pour récupérer les valeurs des types énumérés.
Leur usage est expliqué dans la page Modèles de formulaire de la documentation technique. J'ai aussi mis quelques éléments sur la manière dont les attributs des différentes tables devront être gérés dans les formulaires de saisie, même si c'est loin d'être complet.
Pour traçabilité sur la gestion des catégories non utilisées et des catégories utilisées
Comme tu peux le constater dans cet exemple ['dct:conformsTo', 1, False] est à False pour is_node, donc je ne peux pas le récupérer dans cette condition pour les Cat OUT La question est : Est-ce normal ?
Ce n'est sans doute pas du tout comme ça que tu comptais procéder, mais - pour faire (relativement) simple - je te suggère d'appliquer cette méthode pour constituer tes deux listes CategoryIn et CategoryOut :
Ce fonctionnement a aussi l'intérêt de gérer correctement les cas où des catégories parentes auraient été sauvagement supprimées. Il rend possible les groupes vides, dans le cas où seul le groupe - sans aucun de ses enfants - était inclus dans le modèle. Mais je pense que c'est nécessaire, considérant que l'utilisateur enregistre ses ajouts de catégories un par un. S'il commence par ajouter un groupe, il y aura un moment où l'arbre CategoryIn devra présenter un groupe vide, avant que (en principe) il y ajoute des catégories.
Quand une catégorie bascule de CategoryIn à CategoryOut, rien à faire de particulier côté CategoryIn. Dès lors qu'on admet les groupes vides, cela veut dire qu'on laisse l'utilisateur faire le ménage à la main. Côté CategoryOut, il faut procéder comme lors de l'initialisation de l'arbre : boucler sur les ancêtres de la catégorie à ajouter pour s'assurer qu'ils y sont tous.
Quand une catégorie bascule de CategoryOut à CategoryIn, il faut ajouter les ancêtres d'autant que de besoin côté CategoryIn. Côté CategoryOut, il faut supprimer les groupes vides en bouclant sur la liste des ancêtres triée dans l'ordre inverse - ['a / b', 'a'] au lieu de ['a', 'a / b'] pour les ancêtres de 'a / b / c', par exemple. Si is_node vaut True et que le groupe n'a plus d'enfant, tu le supprimes.
Avec les chemins complets
Avec le libellé et le nom de la catégorie
Avec le nom de la catégorie et le libellé pour les catégories dites communes et avec le libellé et le nom de la catégorie pour les catégories dites locales**** https://user-images.githubusercontent.com/66324136/219303002-6315c32f-189b-4844-8167-428b1310bf19.mp4
Est-ce que ce serait possible de masquer l'onglet Modèles de la fenêtre Personnalisation de l'interface tant que l'interface de gestion des modèles n'est prête à être diffusée ? Outre le fait que les utilisateurs risquent de se demander à quoi servent ces paramètres, on ne voudrait pas qu'ils aient des erreurs parce qu'ils y ont touché avant que ce soit stabilisé... (peu de chance vu les paramètres en question, mais tout de même)
Accessoirement, il faudra sans doute à terme mettre la même condition d'apparition sur cet onglet que sur le reste des outils de gestion des modèles ?
Résolu
J'ai une erreur quand je tente d'ouvrir le menu Personnalisation de l'interface alors que je n'ai encore chargé aucune fiche de métadonnées :
Traceback (most recent call last):
File "C:\Users/leslie.lemaire/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\plume_ui.py", line 916, in clickColorDialog
d = docolorbloc.Dialog(self)
File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\docolorbloc.py", line 14, in __init__
self.setupUiColorBloc(self, mDialog)
File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\colorbloc_ui.py", line 158, in setupUiColorBloc
if self.mDialog .mIfActivateRightsToManageModels : self.tabWidget.addTab(self.tab_widget_Templates,labelTab_Templates)
AttributeError: 'Dialog' object has no attribute 'mIfActivateRightsToManageModels'
Corrigé ce jour
Visualisation des double-clics et des menus contextuels sur chaque catégorie ventilée dans le modèle disponible
Les sauvegardes des catégories utilisées et non utilisées pou un modèle sélectionné
Nouvelle IHM Trois boutons :
C'est vraiment beaucoup plus clair !
Je note qu'il faut une icône pour la réinitialisation.
La seule chose qui m'ennuie un peu, c'est le titre "choix des métadonnées pour le modèle sélectionné". On ne voit pas très bien que c'est le titre de tout ce qui suit... Est-ce que tu peux déjà essayer de mettre une majuscule à "Choix" et l'éloigner un peu de la liste de choix du modèle ?
Pour les infobulles, "utilisées ou non utilisées" et "associées" sont redondants. Que penses-tu de :
OK, je m'y attèle
Ton avis ??
Personnalisation des QTreeView https://github.com/MTES-MCT/metadata-postgresql/assets/66324136/affe7707-9cc7-4540-b7b7-6e5345779d3b
Robustesse Plume embarque le gestion de contexte dans le cadre de la validation des informations saisies.
On pourra ainsi avoir ce type de message
ou bien encore
La connection n'est pas interrompu sur la couche en cours et l'interface de Plume n'est pas réinitialisée
@WREATCHED Comme convenu, j'ai ajouté quelques petites fonctions pour récupérer les informations qui alimenteront l'aide à la saisie du champ sources
. Elles sont présentées dans la nouvelle sous-partie Champ source
de la documentation technique. N'hésite pas si j'ai oublié quelque chose qui te paraîtrait utile.
La vie de Plume continue et son dev aussi
https://github.com/MTES-MCT/metadata-postgresql/assets/66324136/e58fba78-8dc7-49b6-b492-81c3f3ad9678
LECLERC Didier @didier.leclerc 16:46 @Leslie / Didier
Suite aux échanges - mettre l'aide dans la boite d'assistance quand le QWidget a setEnabled(False)
Afin de faciliter la création de modèles spécifiques aux besoins de chaque service, il serait souhaite (voir conclusion suite à la présentation au GT PostGIS du 10/12/2022) de développer un assistant dans l'application Plume.
Liste des besoins pour la gestion des modèles