geo2france / idg-qgis-plugin

Plugin QGIS pour la consultation des données des différentes Infrastructure de Données Géographiques en France
GNU General Public License v2.0
14 stars 4 forks source link

Utiliser QgsNetworkAccessManager pour télécharger le fichier de configuration #15

Closed jbdesbas closed 1 year ago

jbdesbas commented 1 year ago

La librairie requests est utilisée pour télécharger le fichier de configuration. https://github.com/geo2france/idg-qgis-plugin/blob/8ca49a6c2dd2372bd90d7fd88b54dc5ea182b6ab/plugin/geo2france/nodes/tree_node_factory.py#L24 Dans le cas où l'utilisateur a paramétré un proxy pour QGIS (Options -> Réseaux), celui-ci ne sera pas utilisé par le plugin.

Il vaudrait donc mieux utiliser QgsNetworkAccessManager à la place de request.

bchartier commented 1 year ago

Merci @jbdesbas. Si je comprends bien cela permettrait de résoudre le problème de téléchargement du fichier de config chez certains utilisateurs (services déconcentrés de l'État par exemple). C'est cela ?

bchartier commented 1 year ago

Deux exemples d'usage :

https://github.com/felixvons/Easy-Print-Menu/blob/da4bc946ee8e2a37df8357d9f5edf308bdd1d8e9/submodules/tools/compatibility.py#L88-L96

https://github.com/dominodeorg/dominode-qgis-resources/blob/c5a5c028e36488a6d0aa37b8a6ff47bab4a09594/collections/dominode-resources/processing/reportuploader.py#L169-L191

jbdesbas commented 1 year ago

Merci @jbdesbas. Si je comprends bien cela permettrait de résoudre le problème de téléchargement du fichier de config chez certains utilisateurs (services déconcentrés de l'État par exemple). C'est cela ?

Ca dépend d'où vient ce blocage, mais il y a de fortes chances oui. QgsNetworkAccessManager permet d'utiliser les paramétrages définis dans la configuration de QGIS, donc si les flux WFS (par exemple) fonctionnent, la récupération du fichier de config devrait fonctionner. Tu as plus de détails sur le problème rencontré ?

bchartier commented 1 year ago

Merci @jbdesbas. Si je comprends bien cela permettrait de résoudre le problème de téléchargement du fichier de config chez certains utilisateurs (services déconcentrés de l'État par exemple). C'est cela ?

Ca dépend d'où vient ce blocage, mais il y a de fortes chances oui. QgsNetworkAccessManager permet d'utiliser les paramétrages définis dans la configuration de QGIS, donc si les flux WFS (par exemple) fonctionnent, la récupération du fichier de config devrait fonctionner.

Je ne pense pas que ce soit le cas pour WFS car le plugin ne fait que créer une couche dans QGIS avec des paramètres particuliers. Ce n'est pas le plugin qui crée des requêtes WFS et charge le résultat dans une couche. Les requêtes WFS sont directement gérées par QGIS. Du coup ça devrait automatiquement utiliser le paramétrage du proxy.

Tu as plus de détails sur le problème rencontré ?

Non, je sais juste que le fichier de config n'est pas téléchargé par le plugin quand les utilisateurs utilise leur ordi dans les locaux de leur service. Si j'ai bien compris le téléchargement fonctionne quand ils sont chez eux sans passer par un VPN. Certains utilisateurs ont émis l'hypothèse qu'il s'agit d'un problème de proxy. Mais comme je ne peux pas reproduire le problème chez moi et que je n'ai jamais utilisé le plugin depuis un ordi situé dans leurs locaux je ne peux pas confirmer ou non. Le mieux c'est que je crée une branche temporaire du plugin sur le repo de GeoGrandEst et demander à un utilisateur de faire un test. Je pourrais sans doute préparer dans un premier temps un script Python utilisant requests et un autre avec QgsNetworkAccessManager qu'on pourrait tester depuis un QGIS de l'État dans un premier temps.

Qu'en penses-tu ?

jbdesbas commented 1 year ago

Exact c'est ce que je voulais dire, si le WFS marchent et pas le téléchargement du fichier de config, ça renforce les suspicions sur le téléchargement via requests. En fouillant un peu, il semble bien effectivement que QGIS utilise par défaut les paramètres de connectivité du système (https://issues.qgis.org/issues/6922)

Très bonne idée pour le test, on pourra en avoir le cœur net rapidement :+1:

bchartier commented 1 year ago

J'ai réalisé le test à trois interlocuteurs de services de l'Etat en région Grand Est. Le test est concluant. Avec QgsNetworkAccessManager ils arrivent à télécharger le fichier de config alors qu'avec requests cela ne passe pas.

bchartier commented 1 year ago

Devrait être corrigé par eedebca

jbdesbas commented 1 year ago

Modifié pour supporter aussi les fichier QGS/QGZ da0689644b570aceaf758dd1bb8b7ae2c496de77