Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Erreur Python lorsqu'on lance le plugin cadastre (NotSupportedDbType) #302

Closed
sigccsc opened this issue Jun 22, 2021 · 8 comments
Closed
Assignees
Labels
bug exploitation concerne les fonctions d'exploitation des données cadastre par QGIS import concerne les fonctions d'import et de traitement des fichiers DGFiP minor Python remonte une erreur pur Python

Comments

@sigccsc
Copy link

sigccsc commented Jun 22, 2021

Bonjour,

Il est impossible depuis quelques jours d'utiliser l'extension cadastre avec Qgis.
Je suis sous Qgis version 3.10, mais j'ai essayé également avec Qgis 3.4
Le message d'erreur est le suivant:

2021-06-22T10:55:18 WARNING Erreur Python : Une erreur est survenue lors de l'éxécution du code Python: Voir le journal des erreurs Python pour plus de détails

Et voici le log d'erreur python:

              File "C:/Users/utilisateur/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\cadastre\cadastre_dialogs.py", line 182, in updateConnectionList
              dbpluginclass = createDbPlugin(dbType)
              File "C:/PROGRA~1/QGIS3~1.10/apps/qgis-ltr/./python/plugins\db_manager\db_plugins\__init__.py", line 68, in createDbPlugin
              raise NotSupportedDbType(dbtype)
             db_manager.db_plugins.NotSupportedDbType: 

J'ai désinstallé/réinstallé Qgis, j'ai essayé avec les versions de l'extension cadastre 1.11.1 et 1.12.0 mais j'ai toujours cette erreur python.

Merci d'avance pour votre aide

@MaelREBOUX
Copy link
Collaborator

Bonjour,

Je confirme : même erreur au démarrage sous QGIS 3.10.6 et QGIS 3.16.8.
Avec la dernière release 1.12.1.
Bogue sans doute introduit avec la 1.12.0 probablement.

Par contre ça ne bloque pas le fonctionnement du plugin, bizarrement.

@MaelREBOUX MaelREBOUX changed the title Erreur Python lorsqu'on lance le plugin cadastre Erreur Python lorsqu'on lance le plugin cadastre (NotSupportedDbType) Jul 21, 2021
@MaelREBOUX MaelREBOUX added bug exploitation concerne les fonctions d'exploitation des données cadastre par QGIS import concerne les fonctions d'import et de traitement des fichiers DGFiP minor Python remonte une erreur pur Python labels Jul 21, 2021
@Gustry
Copy link
Member

Gustry commented Jul 26, 2021

Avec la dernière release 1.12.1.
Bogue sans doute introduit avec la 1.12.0 probablement.

Tu veux dire que cela fonctionne avec la 1.11.1 ?
Vous pouvez télécharger les anciens zip sur https://github.com/3liz/QgisCadastrePlugin/releases et utiliser le plugin manager de QGIS pour installer le ZIP.

@Gaetanbrl
Copy link
Contributor

Gaetanbrl commented Aug 13, 2021

Je reproduis le même problème avec deux versions 1.12.x (Qgis 3.10.x).
Je vais aussi essayé avec une v1.11.

Fonctionne en v1.11 avec le zip

@Gaetanbrl
Copy link
Contributor

Par contre ça ne bloque pas le fonctionnement du plugin, bizarrement.

Je peux sélectionner PostGis ou SQLite mais plus rien après de mon côté en 1.12.x

@Gaetanbrl
Copy link
Contributor

Gaetanbrl commented Aug 16, 2021

Descriptif supplémentaire

L'erreur semble venir de la valeur du type de connexion qui par défaut est vide (ou -1) lorsqu'on active le plugin la 1ère fois :

dbType = str(self.dialog.liDbType.currentText()).lower()

Ensuite, la condition suivante est valide car la valeur est bien différente de 0. Le reste suit… ce qui génère l'erreur car le type de connexion n'est pourtant pas valide :

if self.dialog.liDbType.currentIndex() != 0:

Quand on a l'erreur, on peut choisir une valeur dans la liste du type de connexion.
On sélectionne donc une des valeurs de la liste (vraiment n'importe laquelle) et on relance Qgis.

L'erreur n'apparaît plus, car elle doit être stockée dans les paramètres (cache) de Qgis (Qgis settings).

Si on modifie le code et que l'on force postgis par défaut, alors on a pas d'erreur à la première init du plugin.

Screenshot

Valeur par défaut dans la liste (index null donc):

image

Reproduire le bug

  • Ouvrir AppData\Roaming\QGIS\QGIS3\profiles\default\QGIS\QGIS3.ini et repérer la variable databaseType.

  • Si vous avez une valeur pour cette variable, supprimez la pour obtenir :

databaseType=

  • Redémarrer / ouvrir Qgis
  • Ouvrir le plugin Cadastre
  • Observer l'erreur
  • Malgrès tout, choisir "Postgis" dans la liste et redémarrer Qgis
  • L'erreur n'arrive plus

Infos complémentaires

Je me demande si ca ne viendrai pas du chargement par défaut ici qui recherche la valeur par défaut vide '' et retourne -1 comme index :

value = settings.value("cadastre/" + widget.settings, type=str, defaultValue='')
combo = getattr(self.dialog, widget.ui)
index = combo.findText(value, Qt.MatchFixedString)

@bchartier
Copy link

bchartier commented Aug 16, 2021

Juste un avis de quelqu'un qui plonge le nez pour la première fois dans ce code :

  • je ne trouve pas étranges les trois lignes de code pointées par @Gaetanbrl
  • par contre, je trouve très étranges les return en plein milieu de la boucle qui englobe ces 3 lignes de code. J'aurais tendance à remplacer ces return par des continue.

@Gaetanbrl
Copy link
Contributor

par contre, je trouve très étranges les return en plein milieu de la boucle qui englobe ces 3 lignes de code. J'aurais tendance à remplacer ces return par des continue.

continue ou return ca passera toujours la condition (-1 est différent de 0)

if self.dialog.liDbType.currentIndex() != 0:

je ne trouve pas étranges les trois lignes de code pointées par @Gaetanbrl

C'est le defaultValue='' qui apporte une valeur vide si la valeur n'est pas déjà dans Qgis settings. Donc retourne -1 ensuite car pas de valeur équivalente trouvée dans la combo des types de connexion

@Gustry Gustry closed this as completed in 6588bb0 Aug 25, 2021
@Gustry
Copy link
Member

Gustry commented Aug 25, 2021

par contre, je trouve très étranges les return en plein milieu de la boucle qui englobe ces 3 lignes de code. J'aurais tendance à remplacer ces return par des continue.

Les widgets sont ordonnés par ordre : type de base de données, nom de la base de données puis à la fin le schéma. C'est pour ca que ce sont sont des return et non pas des continue pour ne pas "setter" une valeur "schema" si pour une raison inconnue on n'a pas trouvé le nom de la base de données.

Merci @Gaetanbrl pour le debug. J'ai corrigé pour mettre une valeur par défaut.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug exploitation concerne les fonctions d'exploitation des données cadastre par QGIS import concerne les fonctions d'import et de traitement des fichiers DGFiP minor Python remonte une erreur pur Python
Projects
None yet
Development

No branches or pull requests

5 participants