Téléverser les fichiers vers "gn_tools/processing"

This commit is contained in:
Tom LAVEILLE 2026-03-20 14:28:15 +01:00
parent db04635b84
commit e5b3e2fedd
4 changed files with 39 additions and 39 deletions

View File

@ -2,10 +2,10 @@
import json import json
import time import time
# Import PyQt libs # Import PyQt libs
from PyQt5.QtCore import QObject, pyqtSignal, QUrl, Qt, QVariant from qgis.PyQt.QtCore import QObject, pyqtSignal, QUrl, Qt, QVariant
from PyQt5.QtGui import QColor from qgis.PyQt.QtGui import QColor
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply
from PyQt5.QtWidgets import QDialog, QPushButton, QApplication, QVBoxLayout, QHBoxLayout, QButtonGroup, QCheckBox, QLabel from qgis.PyQt.QtWidgets import QDialog, QPushButton, QApplication, QVBoxLayout, QHBoxLayout, QButtonGroup, QCheckBox, QLabel
# Import PyQgis libs # Import PyQgis libs
from qgis.utils import iface from qgis.utils import iface
from qgis.core import QgsProject, QgsFeature, QgsDataSourceUri, QgsRectangle, QgsNetworkAccessManager, QgsVectorLayer, QgsPointXY, QgsWkbTypes, QgsMapLayerProxyModel, QgsGeometry, QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsField from qgis.core import QgsProject, QgsFeature, QgsDataSourceUri, QgsRectangle, QgsNetworkAccessManager, QgsVectorLayer, QgsPointXY, QgsWkbTypes, QgsMapLayerProxyModel, QgsGeometry, QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsField
@ -60,7 +60,7 @@ class GetTaxrefId(QObject):
url = "https://api.checklistbank.org/nameusage/search?content=SCIENTIFIC_NAME&datasetKey=2008&facet=datasetKey&facet=rank&facet=issue&facet=status&facet=nomStatus&facet=nameType&facet=field&facet=authorship&facet=authorshipYear&facet=extinct&facet=environment&facet=origin&limit=50&offset=0&q={nom}&rank={rank}&type=PREFIX".format(nom=nom.split("(")[0], rank=rank.lower()) url = "https://api.checklistbank.org/nameusage/search?content=SCIENTIFIC_NAME&datasetKey=2008&facet=datasetKey&facet=rank&facet=issue&facet=status&facet=nomStatus&facet=nameType&facet=field&facet=authorship&facet=authorshipYear&facet=extinct&facet=environment&facet=origin&limit=50&offset=0&q={nom}&rank={rank}&type=PREFIX".format(nom=nom.split("(")[0], rank=rank.lower())
print(url) print(url)
request = QNetworkRequest(QUrl(url)) request = QNetworkRequest(QUrl(url))
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
reply = self.network_manager.get(request) reply = self.network_manager.get(request)
reply.finished.connect(lambda: self.handle_finished(reply, feature_id)) reply.finished.connect(lambda: self.handle_finished(reply, feature_id))
self._iterate_names += 1 self._iterate_names += 1
@ -68,7 +68,7 @@ class GetTaxrefId(QObject):
def handle_finished(self, reply, feature_id): def handle_finished(self, reply, feature_id):
self._pending_downloads -= 1 self._pending_downloads -= 1
if reply.error() != QNetworkReply.NoError: if reply.error() != QNetworkReply.NetworkError(0):
print(f"code: {reply.error()} message: {reply.errorString()}") print(f"code: {reply.error()} message: {reply.errorString()}")
if reply.error() == 403: if reply.error() == 403:
print("Service down") print("Service down")
@ -146,14 +146,14 @@ class ImportDataGbif(QObject):
self.nb_request = 1 self.nb_request = 1
print(url) print(url)
request = QNetworkRequest(url) request = QNetworkRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
reply = self.network_manager.get(request) reply = self.network_manager.get(request)
reply.finished.connect(lambda: self.handle_finished(reply)) reply.finished.connect(lambda: self.handle_finished(reply))
self._pending_downloads += 1 self._pending_downloads += 1
def handle_finished(self, reply): def handle_finished(self, reply):
self._pending_downloads -= 1 self._pending_downloads -= 1
if reply.error() != QNetworkReply.NoError: if reply.error() != QNetworkReply.NetworkError(0):
print(f"code: {reply.error()} message: {reply.errorString()}") print(f"code: {reply.error()} message: {reply.errorString()}")
if reply.error() == 403: if reply.error() == 403:
print("Service down") print("Service down")

View File

@ -8,8 +8,8 @@ from qgis.PyQt.QtCore import QByteArray, QJsonDocument, QObject, QUrl, pyqtSigna
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
from qgis.PyQt.QtWidgets import QAction, QMessageBox, QDialog from qgis.PyQt.QtWidgets import QAction, QMessageBox, QDialog
from PyQt5.QtCore import Qt from qgis.PyQt.QtCore import Qt
from PyQt5.QtWidgets import QApplication from qgis.PyQt.QtWidgets import QApplication
# from PyQt6.QtCore import Qt # from PyQt6.QtCore import Qt
# from PyQt6.QtWidgets import QApplication # from PyQt6.QtWidgets import QApplication
@ -42,7 +42,7 @@ class GetLogin(QDialog):
# self.total_zh = 0 # self.total_zh = 0
# PyQt5 - Version # PyQt5 - Version
QApplication.setOverrideCursor(Qt.WaitCursor) QApplication.setOverrideCursor(Qt.CursorShape(3))
# PyQt6 - Version # PyQt6 - Version
# QApplication.setOverrideCursor(Qt.CursorShape.WaitCursor) # QApplication.setOverrideCursor(Qt.CursorShape.WaitCursor)
self._pending_downloads = 0 self._pending_downloads = 0
@ -57,14 +57,14 @@ class GetLogin(QDialog):
QApplication.restoreOverrideCursor() QApplication.restoreOverrideCursor()
# If reply is an error or reply is a redirection, login is not accepted # If reply is an error or reply is a redirection, login is not accepted
print(reply.attribute( print(reply.attribute(
QNetworkRequest.HttpStatusCodeAttribute QNetworkRequest.Attribute(0)
)) ))
print('Login : ',reply.error()) print('Login : ',reply.error())
self.network_manager.cookieStatus = reply.attribute( self.network_manager.cookieStatus = reply.attribute(
QNetworkRequest.HttpStatusCodeAttribute QNetworkRequest.Attribute(0)
) )
if ( if (
reply.error() != QNetworkReply.NoError reply.error() != QNetworkReply.NetworkError(0)
or self.network_manager.cookieStatus != 200 or self.network_manager.cookieStatus != 200
): ):
# Error code 299 means the logins are invalid # Error code 299 means the logins are invalid
@ -98,7 +98,7 @@ class GetLogin(QDialog):
else: else:
self.cookies = self.network_manager.cookieJar() self.cookies = self.network_manager.cookieJar()
self.is_connect.setText("Good Job !") self.is_connect.setText("Good Job !")
QApplication.setOverrideCursor(Qt.CursorShape(0))
# If the authenfication configuration already exists, # If the authenfication configuration already exists,
# modify it with the new values # modify it with the new values
# self.manager_config.setConfigMap( # self.manager_config.setConfigMap(
@ -156,7 +156,7 @@ class GetLogin(QDialog):
} }
print(url) print(url)
request = QNetworkRequest(url) request = QNetworkRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
document = QJsonDocument(data_json) document = QJsonDocument(data_json)
print(document.toJson()) print(document.toJson())
reply = self.network_manager.post(request, document.toJson()) reply = self.network_manager.post(request, document.toJson())

View File

@ -15,7 +15,7 @@ from qgis.PyQt.QtCore import (
pyqtSignal, pyqtSignal,
QJsonDocument, QJsonDocument,
Qt, Qt,
QTextCodec # QTextCodec
) )
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
from qgis.PyQt.QtWidgets import ( from qgis.PyQt.QtWidgets import (
@ -294,7 +294,7 @@ class PivotStatus(QDialog):
self.cd_nom = cd_nom self.cd_nom = cd_nom
self.url_api = self.domain_url + __api_cd_sta__ self.url_api = self.domain_url + __api_cd_sta__
# QApplication.setOverrideCursor(Qt.WaitCursor) # QApplication.setOverrideCursor(Qt.CursorShape(3))
self.multi_dep = True self.multi_dep = True
self.cookie = (self.network_manager.cookieJar() self.cookie = (self.network_manager.cookieJar()
@ -325,17 +325,17 @@ class PivotStatus(QDialog):
+ ','.join(map(str,cd_nom)) + ','.join(map(str,cd_nom))
) )
request = QNetworkRequest(url) request = QNetworkRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
request.setHeader(QNetworkRequest.CookieHeader, self.cookie) request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
reply = self.network_manager.get(request) reply = self.network_manager.get(request)
reply.finished.connect(lambda: self.import_finished(reply)) reply.finished.connect(lambda: self.import_finished(reply))
def import_finished(self, reply): def import_finished(self, reply):
self._pending_downloads -= 1 self._pending_downloads -= 1
print(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)) print(reply.attribute(QNetworkRequest.Attribute(0)))
if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: if reply.attribute(QNetworkRequest.Attribute(0)) != 200:
print(f"code: {reply.error()} message: {reply.errorString()}") print(f"code: {reply.error()} message: {reply.errorString()}")
else: else:
data_request = reply.readAll().data().decode() data_request = reply.readAll().data().decode()
@ -449,9 +449,9 @@ class PivotStatus(QDialog):
layername = data['layer_name'] layername = data['layer_name']
fcString = json.dumps(data) fcString = json.dumps(data)
codec = QTextCodec.codecForName("UTF-8") # codec = QTextCodec.codecForName("UTF-8")
fields = QgsJsonUtils.stringToFields(fcString, codec) fields = QgsJsonUtils.stringToFields(fcString)
feats = QgsJsonUtils.stringToFeatureList(fcString, fields, codec) feats = QgsJsonUtils.stringToFeatureList(fcString, fields)
vl = QgsVectorLayer(geom_type, layername, "memory") vl = QgsVectorLayer(geom_type, layername, "memory")
if vl.sourceCrs() != self.layer_crs: if vl.sourceCrs() != self.layer_crs:

View File

@ -17,7 +17,7 @@ from qgis.PyQt.QtCore import (
QObject, QObject,
QUrl, QUrl,
pyqtSignal, pyqtSignal,
QTextCodec, # QTextCodec,
Qt Qt
) )
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
@ -68,7 +68,8 @@ class ParamWidget(QDialog):
self.print_change self.print_change
) )
else : else :
QApplication.setOverrideCursor(Qt.WaitCursor) QApplication.setOverrideCursor(Qt.CursorShape(3))
print(network_manager.cookieJar().cookiesForUrl(QUrl(self.domain_url)))
self.cookie = (network_manager.cookieJar() self.cookie = (network_manager.cookieJar()
.cookiesForUrl(QUrl(self.domain_url))[0] .cookiesForUrl(QUrl(self.domain_url))[0]
) )
@ -104,9 +105,9 @@ class ParamWidget(QDialog):
def import_finished(self, reply): def import_finished(self, reply):
self._pending_downloads -= 1 self._pending_downloads -= 1
QApplication.restoreOverrideCursor() QApplication.restoreOverrideCursor()
print(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)) print(reply.attribute(QNetworkRequest.Attribute(0)))
if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: if reply.attribute(QNetworkRequest.Attribute(0)) != 200:
print(f"code: {reply.error()} message: {reply.errorString()}") print(f"code: {reply.error()} message: {reply.errorString()}")
else: else:
self.lst_exp = ['Synthèse taxons'] self.lst_exp = ['Synthèse taxons']
@ -146,8 +147,8 @@ class ParamWidget(QDialog):
# Define request properties (cookie, header) # Define request properties (cookie, header)
request = QNetworkRequest(url) request = QNetworkRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
request.setHeader(QNetworkRequest.CookieHeader, self.cookie) request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
if apiFilter: if apiFilter:
doc = QJsonDocument(self.json_filter) doc = QJsonDocument(self.json_filter)
@ -194,7 +195,7 @@ class LoadingImport(QDialog):
# self.json_filter = {} # self.json_filter = {}
# self.total_zh = 0 # self.total_zh = 0
QApplication.setOverrideCursor(Qt.WaitCursor) QApplication.setOverrideCursor(Qt.CursorShape(3))
self._pending_downloads = 0 self._pending_downloads = 0
self.run() self.run()
@ -283,10 +284,10 @@ class LoadingImport(QDialog):
# Define request properties (cookie, header) # Define request properties (cookie, header)
request = QNetworkRequest(url) request = QNetworkRequest(url)
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
if self.cookie: if self.cookie:
request.setHeader(QNetworkRequest.CookieHeader, self.cookie) request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
if 'Synthèse taxons' in self.source : if 'Synthèse taxons' in self.source :
reply = self.network_manager.post(request,doc.toJson()) reply = self.network_manager.post(request,doc.toJson())
@ -297,9 +298,9 @@ class LoadingImport(QDialog):
def loading_finished(self,reply): def loading_finished(self,reply):
self._pending_downloads -= 1 self._pending_downloads -= 1
print(reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)) print(reply.attribute(QNetworkRequest.Attribute(0)))
if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: if reply.attribute(QNetworkRequest.Attribute(0)) != 200:
print(f"code: {reply.error()} message: {reply.errorString()}") print(f"code: {reply.error()} message: {reply.errorString()}")
else: else:
data_request = reply.readAll().data().decode() data_request = reply.readAll().data().decode()
@ -399,9 +400,8 @@ class LoadingImport(QDialog):
fcString = json.dumps(data) fcString = json.dumps(data)
codec = QTextCodec.codecForName("UTF-8") fields = QgsJsonUtils.stringToFields(fcString)
fields = QgsJsonUtils.stringToFields(fcString, codec) feats = QgsJsonUtils.stringToFeatureList(fcString, fields)
feats = QgsJsonUtils.stringToFeatureList(fcString, fields, codec)
if self.api: if self.api:
crs_api = QgsCoordinateReferenceSystem(self.api['geometry_srid']) crs_api = QgsCoordinateReferenceSystem(self.api['geometry_srid'])