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

L'import de métadonnées depuis le CSW de GéoIDE ne fonctionne plus #65

Closed alhyss closed 2 years ago

alhyss commented 2 years ago

Signalé par la DDT 16 :

Il y a 2 semaines, j'ai réussi à renseigner mes MD depuis un CSW, mais je n'y arrive plus depuis hier. J'ai tenté sur les mêmes jeux de données et rien ne se passe et je ne comprends pas d'où ça vient.

J'avais fait des copies d'écran pour réaliser une documentation.

Soit l'adresse du serveur CSW n'est pas correcte, soit il n'est pas disponible. exemple sur le JDD plan d'eau (fiche de MD de GI catalogue importée_copie d'écran d'une action réussie fin avril)

import_csw_ok

alhyss commented 2 years ago

Corrigé pour la v0.4 bêta.

Il a dû se passer quelque chose avec le CSW de GéoIDE qui l'a récemment rendu moins permissif, mais c'était totalement de ma faute quoi qu'il en soit. La fonction plume.iso.csw.getrecordbyid_request qui génère la requête à envoyer au CSW produisait des chaînes de caractères en encodage-pourcent, qui était ensuite fournies en argument au constructeur de la classe PyQt5.QtCore.QUrl (dans plume.importcsw.Ui_Dialog_ImportCSW.returnXml), lequel... les convertissait de nouveau en encodage-pourcent.

Tous les % du premier passage en encodage-pourcent étaient transformés en %25 lors du second. On se retrouvait avec des horreurs de ce genre :

'https://ogc.geo-ide.developpement-durable.gouv.fr/csw/dataset-harvestable?service=CSW&REQUEST=GetRecordById&version=2.0.2&namespace=xmlns%253Acsw%253Dhttp%253A%252F%252Fwww.opengis.net%252Fcat%252Fcsw&outputFormat=application%252Fxml&outputSchema=http%253A%252F%252Fwww.isotc211.org%252F2005%252Fgmd&ElementSetName=full&Id=fr-120066022-ldd-ccc7f695-94bd-4415-a184-ce261e91c0a8'

Très logiquement le CSW de GéoIDE renvoyait une erreur pour cause de valeur invalide pour le paramètre outputFormat. Il est même surprenant que ce soit passé jusque-là (et encore aujourd'hui avec tous les autres CSW que j'ai testés).

Bref, j'ai amendé plume.iso.csw.getrecordbyid_request pour qu'elle renvoie des URL brutes et pas en encodage-pourcent, ce qui suffit à résoudre le problème.

@WREATCHED Pour ne rien arranger, je perds complètement la tête avec le point de moissonnage de GéoIDE. Si ce n'est dans la doc, j'avais changé partout dataset-harvestable en harvestable-dataset, alors que le premier était le bon (l'autre marche, mais n'est pas censé exister et ne renvoie pas toutes les fiches) ! Est-ce que tu peux t'assurer que l'URL que Plume enregistre dans le QGIS3.ini est bien http://ogc.geo-ide.developpement-durable.gouv.fr/csw/dataset-harvestable, vu la capture de la DDT 16, je crains que ce ne soit pas le cas ? Tant qu'à faire, ce serait bien d'en profiter pour ajouter celui de l'IGN : https://wxs.ign.fr/catalogue/csw. Exemple d'identifiant, si tu veux tester : IGNF_ADMIN_EXPRESS_3-1.xml. Il va falloir qu'on dise à nos testeurs de vider la section Plume de leur QGIS3.ini...

alhyss commented 2 years ago

@WREATCHED D'ailleurs, je viens de voir qu'il n'était pas possible de faire de clic droit + supprimer sur la ligne http://ogc.geo-ide.developpement-durable.gouv.fr/csw/harvestable-dataset dans le tableau des CSW. Est-ce que celui-là est volontairement verrouillé ? Si oui, je ne sais pas si c'est tellement souhaitable. Même en admettant qu'il ne soit pas trop gênant pour des services dont les données ne sont pas sur GéoIDE de l'avoir dans leur liste, si l'URL change pour une raison ou pour une autre ça rend la correction manuelle encore plus difficile puisqu'il devient nécessaire d'aller dans le QGIS3.ini.

WREATCHED commented 2 years ago

Oui, c'est toi qui m'as demandé de verrouiller l'url par défaut de GéoIDE

alhyss commented 2 years ago

Ok. C'est vrai que ça minimise les chances de la perdre par accident, mais ça pose d'autres problèmes... Je reviendrais bien là-dessus. Qu'en penses-tu ?

WREATCHED commented 2 years ago

Résolu dans la 0.4 Bêta Création d'un qgis3ini_update.py contenant une fonction "updateQgis3ini" Cette dernière ligne 10 et 14 peut faire l'objet de modification

#Sauvegarde des paramétres de la section PLUME dans le QGIS3.INI
#==================================================
def updateQgis3ini() :
    #=============
    #=============
    refVersion = 1     # Modifier cet indice (ajouter un incrément + 1 par exemple) pour mettre à jour les nouvelles valeurs par defaut qui se trouve dans :
    #=============     # bibli_plume.py ==> fonction def returnAndSaveDialogParam(self, mAction): 
    #=============
    #=============     # Liste des clés à forcer poru mise à jour si refVersion est supérieure à refVersionQgis3ini 
    mListKeyForceUpdate = ["fileHelpPdf", "fileHelpHtml", "urlCswDefaut", "urlCswIdDefaut"] 
    #=============
    #=============
    ret = False

Modifier refVersion = 1 par exemple en refVersion = 2 pour forcer la mise à jour des informations existantes ou pas dans le QGI3.INI, mais** uniquement celle contenues dont les clés sont listées dans la liste ci-dessous par exemple mListKeyForceUpdate = ["fileHelpPdf", "fileHelpHtml", "urlCswDefaut", "urlCswIdDefaut"]

WREATCHED commented 2 years ago

Bilan suite à discussion LL with DL Changements :

WREATCHED commented 2 years ago

Réponse en image image