Closed alhyss closed 2 years ago
Quel travail que tu as fait ... Je ne sais pas si beaucoup de personnes se rendent compte.
Donc, j'ai fait toutes les modifs, mais je veux nettoyer le code de mes commentaires pour tests etc ...... et Il me reste à tester ......
BRAVO
Merci !!!
Leslie, Peut-être un oubli, ,mais je voudrais ta confirmation même si c'est moi qui ait écrit le code Dans le importcsw.py
`self.Dialog.generationALaVolee(bibli_plume.returnObjetsMeta(self.Dialog, self.Dialog.schema, self.Dialog.table))`
à transformer en :
` self.Dialog.generationALaVolee(bibli_plume.returnObjetsMeta(self.Dialog, self.Dialog.metagraph))`
voir
`self.Dialog.generationALaVolee(bibli_plume.returnObjetsMeta(self.Dialog, old_metagraph))`
ce qui revient au même mais peut-être plus clair vu que au dessus j'ai mis
`raw_xml, old_metagraph = self.returnXml( url_csw, file_identifier ), self.Dialog.metagraph`
Non, pas ça mais ça
self.Dialog.generationALaVolee(bibli_plume.returnObjetsMeta(self.Dialog))
Oui plutôt ça ! Si tu as juste enlevé ses arguments _schema
et table
à plume.bibli_plume.returnObjetsMeta
, alors la dernière proposition me semble bonne.
Après tests avec Leslie, c'est OK
Salut @WREATCHED,
Ci-après la liste tant attendue des modifications à opérer pour basculer des modules de
plume.bibli_rdf
etplume.bibli_pg
à ceux deplume.rdf
etplume.pg
.Je n'ai pas encore mis à jour la doc en conséquence, mais ce sera fait incessamment.
plume_ui.py
,bibli_plume.py
etbibli_gene_objets.py
, supprimer tous les imports depuisbibli_rdf
etbibli_pg
.Accessoirement, dans
bibli_plume.py
, il me paraît possible de supprimer également les imports des modulesre
,uuid
,json
etpathlib
(idem pour les imports d'objets de ces modules). L'import depsycopg2
me semblerait aussi plus à sa place dansplume_ui.py
, considérant qu'il n'est pas utilisé directement parbibli_plume.py
.bibli_plume.py
, ajouter les imports suivants :plume_ui.py
, ajouter les imports suivants :shape
etvocabulary
. Le schéma SHACL et la compilation de thésaurus sont maintenant chargés et exploités directement par les modulesplume.rdf.metagraph
etplume.rdf.thesaurus
respectivement. Je pense que ça implique de :bibli_plume.returnObjetVocabulary
;bibli_plume.returnObjetShape
;plume_ui.Ui_Dialog_plume.setupUi
.Il ne sera plus non plus nécessaire de fournir
shape
etvocabulary
en arguments d'aucune fonction. J'évoque ça dans la suite, fonction par fonction.build_dict
disparaît, il suffit maintenant de générer un nouvel objet de classeplume.rdf.widgetsdict.WidgetsDict
. Le constructeur de WidgetsDict prend moins d'arguments. Comme évoqué précédemment, il n'y a plusshape
, nivocabulary
.templateTabs
disparaît aussi, car les informations qu'il contenait sont maintenant portées partemplate
. Contrairement àbuild_dict
, il n'a aucun argument obligatoire. Ça simplifie ta fonctionbibli_plume.returnObjetsMeta
.Le test de cohérence entre
mode
ettranslation
n'est plus nécessaire non plus, car je le gère désormais de mon côté.Une interrogation, par contre : à quel moment passais-tu à
build_dict
tous les autres paramètres (langList
,language
,readHideBlank
,editHideUnlisted
, etc.) si ce n'est dans cette fonction ? Ne faudrait-il pas les ajouter ? Ça commencerait à faire une longue liste, donc tu peux peut-être profiter du fait que les noms de tes attributs sont cohérents avec ceux de mes paramètres et écrire quelque chose comme ça :_C'est sans grande importance, mais peut-être que tu peux en profiter pour enlever les arguments
_schema
et_table
? Je n'ai pas l'impression qu'ils soient encore utiles._metagraph_from_pg_description
disparaît, remplacée par un appel à la propriétémetagraph
de la classeplume.pg.description.PgDescription
- ce qui suppose d'avoir préalablement généré un objetPgDescription
à partir du commentaire de l'objet PostgreSQL.Cette évolution va affecter les fonctions
bibli_plume.returnObjetMetagraph
etbibli_plume.returnObjetComment
. Un point notable est que les éventuelles erreurs de dé-sérialisation (si les balises<METADATA>
du descriptif PostgreSQL ne contiennent pas un JSON-LD valide) sont désormais gérées par la classePgDescription
, ce qui a l'intérêt de permettre la préservation du texte qui se trouvait à l'extérieur des balises<METADATA>
(pour le reste, c'est toujours un formulaire vierge qui sera présenté à l'utilisateur). Il n'y a donc plus besoin detry ... except
dansreturnObjetMetagraph
.Dans
bibli_plume.returnObjetComment
, il s'agira simplement de remplacer :par :
bibli_plume.returnObjetMetagraph
devient très triviale :update_pg_description
. Le nouveau descriptif est généré en mettant à jour l'attributmetagraph
de l'objetPgDescription
.En conséquence, il faudra remplacer les lignes suivantes de
bibli_plume.saveMetaIhm
:par :
_NB : pour autant que je puisse voir, la variable
new_pg_description
sert ensuite pour la requête de mise à jour sur le serveur PostgreSQL. Il faut donc qu'elle contienne une version textuelle du descriptif, laquelle est obtenue en appliquantstr()
à l'objetPgDescriptif
._WidgetsDict.build_graph
devientWidgetsDict.metagraph
et elle ne prend plus d'argument autre queself
.Dans
bibli_plume.saveMetaIhm
, il faut donc remplacer :par :
bibli_plume.returnObjetData
pourra à ce stade juste renvoyerNone
.Il reste pertinent de conserver la fonction, car l'un des sujets restant à discuter avec le sous-groupe métadonnées est celui des catégories qui se mettraient à jour automatiquement à partir d'informations récupérées côté serveur. Tout ça passera par le paramètre
data
.Par ailleurs, il faudra voir ce qu'on fait du paramètre utilisateur
geoideJSON
, qu'il n'est peut-être pas très utile de présenter à l'utilisateur s'il n'a pas d'effet... Peut-être à mettre en commentaire pour l'instant ?template
du constructeur deWidgetsDict
est maintenant un objetplume.pg.template.TemplateDict
, qui réunit les informations des extemplate
ettemplateTabs
.Cela signifie que la fonction
bibli_plume.generationTemplateAndTabs
n'a plus qu'un argument à renvoyer.Au lieu de :
Il suffit de :
NB : Les lignes non reproduites sont inchangées. Il faut évidemment que l'import des onglets soit avant le bloc de code ci-dessus.
bibli_plume.generationTemplateAndTabs
dansplume_ui.Ui_Dialog_plume.retrieveInfoLayerBrowser
etplume_ui.Ui_Dialog_plume.retrieveInfoLayerQgis
doivent être modifiés.Avant :
Après :
[x] Idem pour les
self.template, self.templateTabs = None, None
qui deviennentself.template = None
. Il y a en a dansplume_ui.Ui_Dialog_plume.retrieveInfoLayerBrowser
,plume_ui.Ui_Dialog_plume.retrieveInfoLayerQgis
et aussiplume_ui.Ui_Dialog_plume.clickButtonsTemplateActions
.[x] Le module
plume.bibli_pg.pg_queries
devientplume.pg.queries
. Je pense que le plus simple est un rechercher/remplacer de "pg_queries." par "queries." dans les fichiersplume_ui.py
etbibli_plume.py
[x] Plus de douteuse fonction
is_root
pour reconnaître les onglets, il suffit de consulter la cléobject
du dictionnaire interne, qui prend alors la valeur'tab'
. Dans la fonctionbibli_gene_objets.generationObjets
, tu pourras donc remplacer :par :
[x] La fonction
search_template
est désormais dansplume.pg.template
, et j'ai dû inverser l'ordre de ses arguments pour rendremetagraph
optionnel.Dans
bibli_plume.returnObjetTpl_label
, tu peux remplacer :par :
[x] J'ai essayé de minimiser les changements sur les clés des dictionnaires internes des dictionnaires de widgets, même s'il y a quelques noms qu'il ne m'aurait pas déplu de changer pour que l'ensemble soit plus cohérent... (enfin, je parle de changements qui t'affectent, car une grosse différence est que toutes les clés qui ne servaient que de mon côté ne sont plus là). Néanmoins, j'ai quand même profité du fait que ces dictionnaires ne servent plus qu'à te fournir l'information sous la bonne forme pour rationaliser la question de la visibilité : plus de clé
hidden M
, à présent tout est danshidden
. Par conséquent, dansbibli_gene_objets.py
, tu peux remplacer tous lesif (_valueObjet['hidden'] or _valueObjet['hidden M'])
parif _valueObjet['hidden']
. Ça vaut bien sûr aussi pour leif (__valueObjet['hidden'] or __valueObjet['hidden M'])
degenerationLabel
, qui devientif __valueObjet['hidden']
.[x]
hidden M
apparaissait aussi dansbibli_plume.saveMetaIhm
.devient :
[x] L'autre évolution sur les dictionnaires internes concerne les thésaurus, que je gère maintenant de mon côté pour améliorer encore les performances. À présent, tu n'as plus rien d'autre à faire que récupérer la liste dans la clé
thesaurus values
du dictionnaire interne.Dans
bibli_gene_objets.action_mObjetQToolButton
, les lignes suivantes :deviennent :
De même, dans
bibli_gene_objets.generationObjets
, tu peux remplacer le bloc :par :
thesaurusCollection
que tu définissais dansplume_ui.Ui_Dialog_plume.setupUi
.À supprimer :
[x] Les fonctions
export_extension_from_format
,import_extensions_from_format
etimport_formats
se trouvent désormais dans le moduleplume.rdf.utils
. Avec les imports que j'ai mis en début de message, ça vaut dire qu'il faudra remplacer :rdf_utils.export_extension_from_format
parexport_extension_from_format
dansbibli_plume.exportObjetMetagraph
;rdf_utils.import_formats
parimport_formats
dansbibli_plume.importObjetMetagraph
;rdf_utils.import_extensions_from_format
parimport_extensions_from_format
dansbibli_plume.importObjetMetagraph
.[x] Pour les exports, c'est désormais la méthode
export
deplume.rdf.metagraph.Metagraph
et plus une fonction.Dans
bibli_plume.exportObjetMetagraph
, il faudra remplacer :par :
Aucun rapport, mais c'est un peu bizarre tu fournisses l'extension du fichier en argument, ici. Ce qu'attend la fonction, c'est le format qu'a choisi l'utilisateur dans le menu d'export.
available_formats
devient une propriété deplume.rdf.metagraph.Metagraph
.Dans
plume_ui.Ui_Dialog_plume.majQmenuExportIconFlag
, tu peux remplacer :par :
plume.rdf.metagraph.metagraph_from_file
prend désormais aussi en charge le nettoyage du graphe.Dans
bibli_plume.importObjetMetagraph
, tu peux remplacer :par :
[x] La fonction
copy_metagraph
est maintenant dansplume.rdf.metagraph
. Avec les imports que j'ai mis au début, tu peux juste remplacer "rdf_utils.copy_metagraph" par "copy_metagraph" au deux endroits où ça apparaît dansplume_ui.Ui_Dialog_plume.clickButtonsActions
.[x] N'oublie pas de rendre son argument
old_metagraph
àmetagraph_from_iso
dansimportcsw.Ui_Dialog_ImportCSW.functionImport
.D'ailleurs, est-ce cette fonction n'utilise pas toujours le couple URL/identifiant que tu as figé dans le code au lieu de ceux fournis par l'utilisateur ? Ou tu as modifié ça après avoir remonté tes modifications sur le Git, peut-être ?
[x] Et le contrôle sur
isinstance(self.Dialog.metagraph, Metagraph)
dansimportcsw.Ui_Dialog_ImportCSW.setupUiImportCSW
ne sert plus à rien, tu peux te contenter deurl_csw, file_identifier = self.Dialog.metagraph.linked_record
.[x] Supprimer les répertoires
plume/bibli_rdf
etplume/bibli_pg
.[x] L'extension PostgreSQL
metadata
s'appelle désormaisplume_pg
.Dans `plume_ui.Ui_Dialog_plume.displayToolBar, tu pourras remplacer :
par :
Juste après, pour le message affiché en infobulle si l'extension n'est pas installée, ce serait :
L'extension PostgreSQL plume_pg n'est pas installée.
.