Merge pull request 'Qt5 et Qt6 Compatible' (#4) from tlaveille/plugin_gn_tools:master into master
Reviewed-on: #4
This commit is contained in:
commit
73bb436379
@ -19,16 +19,16 @@ deprecated=False
|
||||
experimental=True
|
||||
plugin_dependencies=
|
||||
qgisMinimumVersion=3.30
|
||||
qgisMaximumVersion=3.99
|
||||
qgisMaximumVersion=4.99
|
||||
supportsQt6=True
|
||||
|
||||
# versioning
|
||||
version=0.1.0
|
||||
version=0.1.1
|
||||
changelog=
|
||||
|
||||
|
||||
[service]
|
||||
domain_name=https://geonature.cen-isere.fr/geonature
|
||||
domain_name=https://geonature.cenra-outils.org/geonature
|
||||
biodiv_aura=https://donnees.biodiversite-auvergne-rhone-alpes.fr
|
||||
|
||||
[ref_taxon]
|
||||
|
||||
7
gn_tools/plugin_main.py
Executable file → Normal file
7
gn_tools/plugin_main.py
Executable file → Normal file
@ -24,7 +24,7 @@ from qgis.PyQt.QtCore import QCoreApplication, QLocale, QTranslator, QUrl
|
||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
||||
from qgis.PyQt.QtWidgets import QAction, QMessageBox
|
||||
from qgis.PyQt.QtNetwork import QNetworkAccessManager
|
||||
from PyQt5.QtWidgets import QCheckBox, QApplication
|
||||
from qgis.PyQt.QtWidgets import QCheckBox, QApplication
|
||||
|
||||
# project
|
||||
from gn_tools.__about__ import (
|
||||
@ -388,12 +388,13 @@ class GnToolsPlugin:
|
||||
|
||||
self.dlg.show()
|
||||
# Run the dialog event loop
|
||||
result = self.dlg.exec_()
|
||||
result = self.dlg.exec()
|
||||
if result:
|
||||
# Do something useful here - delete the line containing pass and
|
||||
# substitute with you
|
||||
print('ok')
|
||||
print(result)
|
||||
self.dlg.activateWindow()
|
||||
pass
|
||||
|
||||
|
||||
@ -469,7 +470,7 @@ class GnToolsPlugin:
|
||||
|
||||
def activate_window(self):
|
||||
# Put the dialog on top once the rectangle is drawn
|
||||
# self.activateWindow()
|
||||
self.dlg.activateWindow()
|
||||
self.canvas.unsetMapTool(self.move_tool)
|
||||
self.check_valid()
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
# Import PyQt libs
|
||||
from PyQt5.QtCore import (
|
||||
from qgis.PyQt.QtCore import (
|
||||
pyqtSignal,
|
||||
Qt,
|
||||
)
|
||||
from PyQt5.QtGui import QColor
|
||||
from qgis.PyQt.QtGui import QColor
|
||||
# Import PyQgis libs
|
||||
from qgis.core import (
|
||||
QgsRectangle,
|
||||
@ -42,7 +42,7 @@ class RectangleFeatureTool(QgsMapTool):
|
||||
|
||||
# Mouse button pressed.
|
||||
def canvasPressEvent(self, event: QgsMapMouseEvent):
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() == Qt.MouseButton(0x00000001):
|
||||
self.start_point = self.toMapCoordinates(event.pos())
|
||||
self.end_point = self.start_point
|
||||
self.is_left_button_pressed = True
|
||||
@ -58,7 +58,7 @@ class RectangleFeatureTool(QgsMapTool):
|
||||
# The mouse button is released.
|
||||
def canvasReleaseEvent(self, event: QgsMapMouseEvent):
|
||||
# if the left mouse button was released
|
||||
if event.button() == Qt.LeftButton:
|
||||
if event.button() == Qt.MouseButton(0x00000001):
|
||||
if event.type() == 3:
|
||||
# get the rectangle created from the click point and
|
||||
# left mouse button release points
|
||||
|
||||
@ -77,15 +77,15 @@ class GetFilterFromAPI(QDialog):
|
||||
self._pending_downloads -= 1
|
||||
# If reply is an error or reply is a redirection, login is not accepted
|
||||
print(reply.attribute(
|
||||
QNetworkRequest.HttpStatusCodeAttribute
|
||||
QNetworkRequest.Attribute(0)
|
||||
))
|
||||
print(reply.error(),' : ',reply.dtype)
|
||||
self.network_manager.cookieStatus = reply.attribute(
|
||||
QNetworkRequest.HttpStatusCodeAttribute
|
||||
QNetworkRequest.Attribute(0)
|
||||
)
|
||||
QApplication.restoreOverrideCursor()
|
||||
if (
|
||||
reply.error() != QNetworkReply.NoError
|
||||
reply.error() != QNetworkReply.NetworkError(0)
|
||||
or self.network_manager.cookieStatus != 200
|
||||
):
|
||||
# Error code 299 means the logins are invalid
|
||||
@ -126,7 +126,7 @@ class GetFilterFromAPI(QDialog):
|
||||
|
||||
def get_jdd(self):
|
||||
self._pending_downloads += 1
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
|
||||
self.dlg.jdd_box.setEnabled(True)
|
||||
url_api = self.domain_url + 'api/meta/datasets?'
|
||||
@ -142,7 +142,7 @@ class GetFilterFromAPI(QDialog):
|
||||
|
||||
def get_phylog(self):
|
||||
self._pending_downloads += 2
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
|
||||
self.dlg.regne.setEnabled(True)
|
||||
if self.parent.src_name == 'GéoNature':
|
||||
@ -154,7 +154,7 @@ class GetFilterFromAPI(QDialog):
|
||||
|
||||
|
||||
def get_taxon_tree(self):
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
|
||||
if self.parent.src_name == 'GéoNature':
|
||||
url_api = self.tax_url + 'api/synthese/taxons_tree'
|
||||
@ -170,8 +170,8 @@ class GetFilterFromAPI(QDialog):
|
||||
def send_request(self,url,type_request,type_param):
|
||||
print(url)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.CookieHeader, self.cookie)
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
|
||||
if type_request == 'GET':
|
||||
reply = self.network_manager.get(request)
|
||||
elif type_request == 'POST':
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
import json
|
||||
import time
|
||||
# Import PyQt libs
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, QUrl, Qt, QVariant
|
||||
from PyQt5.QtGui import QColor
|
||||
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
||||
from PyQt5.QtWidgets import QDialog, QPushButton, QApplication, QVBoxLayout, QHBoxLayout, QButtonGroup, QCheckBox, QLabel
|
||||
from qgis.PyQt.QtCore import QObject, pyqtSignal, QUrl, Qt, QVariant
|
||||
from qgis.PyQt.QtGui import QColor
|
||||
from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply
|
||||
from qgis.PyQt.QtWidgets import QDialog, QPushButton, QApplication, QVBoxLayout, QHBoxLayout, QButtonGroup, QCheckBox, QLabel
|
||||
# Import PyQgis libs
|
||||
from qgis.utils import iface
|
||||
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())
|
||||
print(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.finished.connect(lambda: self.handle_finished(reply, feature_id))
|
||||
self._iterate_names += 1
|
||||
@ -68,7 +68,7 @@ class GetTaxrefId(QObject):
|
||||
|
||||
def handle_finished(self, reply, feature_id):
|
||||
self._pending_downloads -= 1
|
||||
if reply.error() != QNetworkReply.NoError:
|
||||
if reply.error() != QNetworkReply.NetworkError(0):
|
||||
print(f"code: {reply.error()} message: {reply.errorString()}")
|
||||
if reply.error() == 403:
|
||||
print("Service down")
|
||||
@ -146,14 +146,14 @@ class ImportDataGbif(QObject):
|
||||
self.nb_request = 1
|
||||
print(url)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
reply = self.network_manager.get(request)
|
||||
reply.finished.connect(lambda: self.handle_finished(reply))
|
||||
self._pending_downloads += 1
|
||||
|
||||
def handle_finished(self, reply):
|
||||
self._pending_downloads -= 1
|
||||
if reply.error() != QNetworkReply.NoError:
|
||||
if reply.error() != QNetworkReply.NetworkError(0):
|
||||
print(f"code: {reply.error()} message: {reply.errorString()}")
|
||||
if reply.error() == 403:
|
||||
print("Service down")
|
||||
|
||||
@ -8,8 +8,8 @@ from qgis.PyQt.QtCore import QByteArray, QJsonDocument, QObject, QUrl, pyqtSigna
|
||||
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
|
||||
from qgis.PyQt.QtWidgets import QAction, QMessageBox, QDialog
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
from qgis.PyQt.QtCore import Qt
|
||||
from qgis.PyQt.QtWidgets import QApplication
|
||||
# from PyQt6.QtCore import Qt
|
||||
# from PyQt6.QtWidgets import QApplication
|
||||
|
||||
@ -42,7 +42,7 @@ class GetLogin(QDialog):
|
||||
# self.total_zh = 0
|
||||
|
||||
# PyQt5 - Version
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
# PyQt6 - Version
|
||||
# QApplication.setOverrideCursor(Qt.CursorShape.WaitCursor)
|
||||
self._pending_downloads = 0
|
||||
@ -57,14 +57,14 @@ class GetLogin(QDialog):
|
||||
QApplication.restoreOverrideCursor()
|
||||
# If reply is an error or reply is a redirection, login is not accepted
|
||||
print(reply.attribute(
|
||||
QNetworkRequest.HttpStatusCodeAttribute
|
||||
QNetworkRequest.Attribute(0)
|
||||
))
|
||||
print('Login : ',reply.error())
|
||||
self.network_manager.cookieStatus = reply.attribute(
|
||||
QNetworkRequest.HttpStatusCodeAttribute
|
||||
QNetworkRequest.Attribute(0)
|
||||
)
|
||||
if (
|
||||
reply.error() != QNetworkReply.NoError
|
||||
reply.error() != QNetworkReply.NetworkError(0)
|
||||
or self.network_manager.cookieStatus != 200
|
||||
):
|
||||
# Error code 299 means the logins are invalid
|
||||
@ -98,7 +98,7 @@ class GetLogin(QDialog):
|
||||
else:
|
||||
self.cookies = self.network_manager.cookieJar()
|
||||
self.is_connect.setText("Good Job !")
|
||||
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(0))
|
||||
# If the authenfication configuration already exists,
|
||||
# modify it with the new values
|
||||
# self.manager_config.setConfigMap(
|
||||
@ -156,7 +156,7 @@ class GetLogin(QDialog):
|
||||
}
|
||||
print(url)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
document = QJsonDocument(data_json)
|
||||
print(document.toJson())
|
||||
reply = self.network_manager.post(request, document.toJson())
|
||||
|
||||
@ -15,7 +15,7 @@ from qgis.PyQt.QtCore import (
|
||||
pyqtSignal,
|
||||
QJsonDocument,
|
||||
Qt,
|
||||
QTextCodec
|
||||
# QTextCodec
|
||||
)
|
||||
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
|
||||
from qgis.PyQt.QtWidgets import (
|
||||
@ -294,7 +294,7 @@ class PivotStatus(QDialog):
|
||||
self.cd_nom = cd_nom
|
||||
self.url_api = self.domain_url + __api_cd_sta__
|
||||
|
||||
# QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
# QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
self.multi_dep = True
|
||||
|
||||
self.cookie = (self.network_manager.cookieJar()
|
||||
@ -325,17 +325,17 @@ class PivotStatus(QDialog):
|
||||
+ ','.join(map(str,cd_nom))
|
||||
)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.CookieHeader, self.cookie)
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
|
||||
reply = self.network_manager.get(request)
|
||||
reply.finished.connect(lambda: self.import_finished(reply))
|
||||
|
||||
|
||||
def import_finished(self, reply):
|
||||
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()}")
|
||||
else:
|
||||
data_request = reply.readAll().data().decode()
|
||||
@ -449,9 +449,9 @@ class PivotStatus(QDialog):
|
||||
layername = data['layer_name']
|
||||
|
||||
fcString = json.dumps(data)
|
||||
codec = QTextCodec.codecForName("UTF-8")
|
||||
fields = QgsJsonUtils.stringToFields(fcString, codec)
|
||||
feats = QgsJsonUtils.stringToFeatureList(fcString, fields, codec)
|
||||
# codec = QTextCodec.codecForName("UTF-8")
|
||||
fields = QgsJsonUtils.stringToFields(fcString)
|
||||
feats = QgsJsonUtils.stringToFeatureList(fcString, fields)
|
||||
|
||||
vl = QgsVectorLayer(geom_type, layername, "memory")
|
||||
if vl.sourceCrs() != self.layer_crs:
|
||||
|
||||
@ -17,7 +17,7 @@ from qgis.PyQt.QtCore import (
|
||||
QObject,
|
||||
QUrl,
|
||||
pyqtSignal,
|
||||
QTextCodec,
|
||||
# QTextCodec,
|
||||
Qt
|
||||
)
|
||||
from qgis.PyQt.QtNetwork import QNetworkReply, QNetworkRequest
|
||||
@ -68,7 +68,8 @@ class ParamWidget(QDialog):
|
||||
self.print_change
|
||||
)
|
||||
else :
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
print(network_manager.cookieJar().cookiesForUrl(QUrl(self.domain_url)))
|
||||
self.cookie = (network_manager.cookieJar()
|
||||
.cookiesForUrl(QUrl(self.domain_url))[0]
|
||||
)
|
||||
@ -104,9 +105,9 @@ class ParamWidget(QDialog):
|
||||
def import_finished(self, reply):
|
||||
self._pending_downloads -= 1
|
||||
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()}")
|
||||
else:
|
||||
self.lst_exp = ['Synthèse taxons']
|
||||
@ -146,8 +147,8 @@ class ParamWidget(QDialog):
|
||||
|
||||
# Define request properties (cookie, header)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.CookieHeader, self.cookie)
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
|
||||
|
||||
if apiFilter:
|
||||
doc = QJsonDocument(self.json_filter)
|
||||
@ -194,7 +195,7 @@ class LoadingImport(QDialog):
|
||||
# self.json_filter = {}
|
||||
# self.total_zh = 0
|
||||
|
||||
QApplication.setOverrideCursor(Qt.WaitCursor)
|
||||
QApplication.setOverrideCursor(Qt.CursorShape(3))
|
||||
self._pending_downloads = 0
|
||||
self.run()
|
||||
|
||||
@ -283,10 +284,10 @@ class LoadingImport(QDialog):
|
||||
|
||||
# Define request properties (cookie, header)
|
||||
request = QNetworkRequest(url)
|
||||
request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json")
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(0), "application/json")
|
||||
|
||||
if self.cookie:
|
||||
request.setHeader(QNetworkRequest.CookieHeader, self.cookie)
|
||||
request.setHeader(QNetworkRequest.KnownHeaders(4), self.cookie)
|
||||
|
||||
if 'Synthèse taxons' in self.source :
|
||||
reply = self.network_manager.post(request,doc.toJson())
|
||||
@ -297,9 +298,9 @@ class LoadingImport(QDialog):
|
||||
|
||||
def loading_finished(self,reply):
|
||||
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()}")
|
||||
else:
|
||||
data_request = reply.readAll().data().decode()
|
||||
@ -399,9 +400,8 @@ class LoadingImport(QDialog):
|
||||
|
||||
fcString = json.dumps(data)
|
||||
|
||||
codec = QTextCodec.codecForName("UTF-8")
|
||||
fields = QgsJsonUtils.stringToFields(fcString, codec)
|
||||
feats = QgsJsonUtils.stringToFeatureList(fcString, fields, codec)
|
||||
fields = QgsJsonUtils.stringToFields(fcString)
|
||||
feats = QgsJsonUtils.stringToFeatureList(fcString, fields)
|
||||
|
||||
if self.api:
|
||||
crs_api = QgsCoordinateReferenceSystem(self.api['geometry_srid'])
|
||||
|
||||
0
gn_tools/toolbelt/log_handler.py
Executable file → Normal file
0
gn_tools/toolbelt/log_handler.py
Executable file → Normal file
0
gn_tools/toolbelt/preferences.py
Executable file → Normal file
0
gn_tools/toolbelt/preferences.py
Executable file → Normal file
Loading…
x
Reference in New Issue
Block a user