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
0 stars 1 forks source link

Plantage lors de l'import CSW avec un modèle intégrant du calcul automatique #122

Closed alhyss closed 1 year ago

alhyss commented 1 year ago

Plume plante méchamment (sans réinitialisation du formulaire, donc après plus rien ne va) lors d'un import CSW avec un modèle de fiche de métadonnées qui inclut du calcul automatique sur au moins un champ.

Je pense que ça vient du fait que l'import CSW n'était pas identifié comme une action nécessitant des interactions avec le serveur PostgreSQL et donc, contrairement aux autres méthodes de plume.plume_ui.Ui_Dialog_plume qui sont exécutées lorsque l'utilisateur clique sur un bouton du menu, clickImportCSW() n'utilise pas le gestionnaire de contexte safe_pg_connection(). https://github.com/MTES-MCT/metadata-postgresql/blob/96e1e21f1935f2814eadd762433579af24580ba0/plume/plume_ui.py#L921

Ajouter le gestionnaire de contexte devrait suffire à régler le problème ?

    def clickImportCSW(self):
        with self.safe_pg_connection():
            d = doimportcsw.Dialog(self)
            d.exec_()
        return

Il faudra peut-être aussi refaire le tour de toutes les actions qui (re)génèrent le dictionnaire de widgets pour s'assurer qu'il n'y a pas le même problème. En regardant rapidement, j'ai cru voir safe_pg_connection() partout, mais un contrôle plus attentif ne serait pas de trop.

Pour reproduire l'erreur :

Message :

psycopg2.InterfaceError: connection already closed 
Traceback (most recent call last):
  File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\importcsw.py", line 270, in 
    self.pushButton.clicked.connect(lambda : self.functionImport())
  File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\importcsw.py", line 362, in functionImport
    self.Dialog.generationALaVolee(bibli_plume.returnObjetsMeta(self.Dialog))
  File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\plume_ui.py", line 598, in generationALaVolee
    action_mObjetQToolButton_ComputeButton(self, key, value, 'BEFORE')
  File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\bibli_gene_objets.py", line 916, in action_mObjetQToolButton_ComputeButton
    r, zMessError_Code, zMessError_Erreur, zMessError_Diag = executeSql(self, self.mConnectEnCours, mKeySql, optionRetour = "fetchone")
  File "C:\Users/alhyss/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\plume\bibli_plume.py", line 735, in executeSql
    pointeurBase = pointeur.cursor()
psycopg2.InterfaceError: connection already closed
WREATCHED commented 1 year ago

Corrigé et poussé Git

alhyss commented 1 year ago

Tout m'a l'air en ordre 😀