From 1cd816c706dbf31abe0a3e96d90ce6671078c02c Mon Sep 17 00:00:00 2001 From: Tom LAVEILLE Date: Mon, 28 Jul 2025 16:23:25 +0200 Subject: [PATCH] flake8 --- CenRa_FLUX/CenRa_Flux.py | 29 +- CenRa_FLUX/about_form.py | 4 +- CenRa_FLUX/flux_editor.py | 537 ++++++++++------------------------ CenRa_FLUX/issues.py | 34 ++- CenRa_FLUX/tools/HubToTea.py | 5 +- CenRa_FLUX/tools/SQLRequet.py | 24 +- CenRa_FLUX/tools/resources.py | 47 +-- 7 files changed, 225 insertions(+), 455 deletions(-) diff --git a/CenRa_FLUX/CenRa_Flux.py b/CenRa_FLUX/CenRa_Flux.py index 5c12c75..2ebf92b 100644 --- a/CenRa_FLUX/CenRa_Flux.py +++ b/CenRa_FLUX/CenRa_Flux.py @@ -4,28 +4,25 @@ __email__ = "info@3liz.org" from qgis.core import QgsApplication -from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl +from qgis.PyQt.QtCore import QUrl, QSettings from qgis.PyQt.QtGui import QDesktopServices, QIcon -from qgis.PyQt.QtWidgets import QAction, QMessageBox +from qgis.PyQt.QtWidgets import QAction from qgis.utils import iface import qgis +# include -#include -import socket import os from .tools.resources import ( - plugin_path, pyperclip, resources_path, maj_verif, ) pyperclip() + from .flux_editor import Flux_Editor from .about_form import AboutDialog -from qgis.PyQt.QtCore import * - class PgFlux: def __init__(self): @@ -37,18 +34,18 @@ class PgFlux: self.dock_action = None self.help_action = None plugin_dir = os.path.dirname(__file__) - end_find = plugin_dir.rfind('\\')+1 + end_find = plugin_dir.rfind('\\') + 1 global NAME NAME = plugin_dir[end_find:] maj_verif(NAME) # Display About window on first use - version = qgis.utils.pluginMetadata('CenRa_FLUX','version') + version = qgis.utils.pluginMetadata('CenRa_FLUX', 'version') s = QSettings() versionUse = s.value("flux/version", 1, type=str) - if str(versionUse) != str(version) : + if str(versionUse) != str(version): s.setValue("flux/version", str(version)) - print(versionUse,version) + print(versionUse, version) self.open_about_dialog() def initGui(self): @@ -65,13 +62,11 @@ class PgFlux: self.help_action.triggered.connect(self.open_help) if not self.action_editor: self.action_editor = Flux_Editor() - - - self.flux_editor = QAction(icon, 'SigCEN',None) + self.flux_editor = QAction(icon, 'SigCEN', None) self.toolBar.addAction(self.flux_editor) self.flux_editor.triggered.connect(self.open_editor) self.flux_editor.setEnabled(False) - if os.access('N:/',os.R_OK): + if os.access('N:/', os.R_OK): self.flux_editor.setEnabled(True) def open_about_dialog(self): @@ -80,6 +75,7 @@ class PgFlux: """ dialog = AboutDialog(iface) dialog.exec() + def open_help(): """ Open the online help. """ QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/')) @@ -91,8 +87,7 @@ class PgFlux: def unload(self): """ Unload the plugin. """ if self.action_editor: - iface.removePluginMenu('CenRa_Flux',self.flux_editor) - + iface.removePluginMenu('CenRa_Flux', self.flux_editor) if self.provider: QgsApplication.processingRegistry().removeProvider(self.provider) diff --git a/CenRa_FLUX/about_form.py b/CenRa_FLUX/about_form.py index 7e1595e..1a653be 100644 --- a/CenRa_FLUX/about_form.py +++ b/CenRa_FLUX/about_form.py @@ -3,7 +3,7 @@ import os.path from pathlib import Path from qgis.PyQt import uic -from qgis.PyQt.QtGui import QPixmap +# from qgis.PyQt.QtGui import QPixmap from qgis.PyQt.QtWidgets import QDialog from .tools.resources import devlog @@ -43,4 +43,4 @@ class AboutDialog(QDialog, ABOUT_FORM_CLASS): Run some actions when the user closes the dialog """ - self.close() \ No newline at end of file + self.close() diff --git a/CenRa_FLUX/flux_editor.py b/CenRa_FLUX/flux_editor.py index 9421951..e07aa33 100644 --- a/CenRa_FLUX/flux_editor.py +++ b/CenRa_FLUX/flux_editor.py @@ -2,71 +2,67 @@ from __future__ import absolute_import # Import the PyQt and QGIS libraries -from builtins import next +# from builtins import next from builtins import str -from builtins import object -import qgis -from qgis.PyQt import QtCore +# from builtins import object + +from qgis.PyQt import QtCore, QtGui from qgis.PyQt.QtCore import QSettings from qgis.PyQt import QtWidgets -from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog +# from qgis.PyQt.QtWidgets import QDialog from qgis.PyQt.QtGui import QIcon -try: - from PyQt5.QtCore import * - from PyQt5.QtGui import * - from PyQt5 import QtGui -except: - from PyQt6.QtCore import * - from PyQt6.QtGui import * - from PyQt6 import QtGui -from qgis.core import * -from qgis.core import QgsDataSourceUri +# from qgis.PyQt.QtCore import * + +# from qgis.core import QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsProject, QgsSettings +from qgis.core import QgsDataSourceUri, QgsCoordinateReferenceSystem, QgsCoordinateTransform, QgsProject, QgsSettings, QgsApplication, QgsVectorLayer, QgsRasterLayer, QgsWkbTypes from qgis.PyQt.QtWidgets import ( QDialog, - QAction, - QDockWidget, - QFileDialog, - QInputDialog, - QMenu, - QToolButton, - QTableWidget, + # QAction, + # QDockWidget, + # QFileDialog, + # QInputDialog, + # QMenu, + # QToolButton, + # QTableWidget, QTableWidgetItem, QMessageBox, QVBoxLayout, ) -from .tools.SQLRequet import * +from .tools.SQLRequet import schemaname_list, schemaname_list_ref, schemaname_distinct from .tools.resources import ( load_ui, resources_path, - send_issues, + # send_issues, ) try: from .tools.PythonSQL import login_base -except: +except NameError: print('Pas de fichier PythonSQL') -from .issues import CenRa_Issues -from ast import literal_eval +# from .issues import CenRa_Issues + +# from ast import literal_eval from qgis.utils import iface -import os.path -import webbrowser, os +# import os.path +# import os +# import webbrowser import psycopg2 import psycopg2.extras -import base64 +# import base64 global DeBUG DeBUG = 0 itemIconRaster = QTableWidgetItem() icon = QIcon() -icon.addPixmap(QtGui.QPixmap(resources_path('icons','mIconRaster.svg')), QIcon.Mode(0), QIcon.State(1)) +icon.addPixmap(QtGui.QPixmap(resources_path('icons', 'mIconRaster.svg')), QIcon.Mode(0), QIcon.State(1)) itemIconRaster.setIcon(icon) itemIconVecteur = QTableWidgetItem() icon = QIcon() -icon.addPixmap(QtGui.QPixmap(resources_path('icons','mIconVecteur.svg')), QIcon.Mode(0), QIcon.State(1)) +icon.addPixmap(QtGui.QPixmap(resources_path('icons', 'mIconVecteur.svg')), QIcon.Mode(0), QIcon.State(1)) itemIconVecteur.setIcon(icon) try: @@ -79,141 +75,32 @@ try: sigdb = account[5] refdb = account[6] -except: +except NameError: print('Fails to login DB for account') EDITOR_CLASS = load_ui('CenRa_Flux_base.ui') -html = ''' - - - - - - - -
- - - -''' targetCrs = QgsCoordinateReferenceSystem('EPSG:4326') layerCrs = QgsCoordinateReferenceSystem('EPSG:2154') -TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs,QgsProject.instance()) +TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs, QgsProject.instance()) + class Flux_Editor(QDialog, EDITOR_CLASS): - def __init__(self, parent=None): _ = parent super().__init__() self.setupUi(self) self.settings = QgsSettings() self.s = QSettings() - self.setWindowIcon(QtGui.QIcon(resources_path('icons','icon.png'))) + self.setWindowIcon(QtGui.QIcon(resources_path('icons', 'icon.png'))) self.first_start = None self.iface = iface - self.label_3.setPixmap(QtGui.QPixmap(resources_path('ui','logo.png'))) - self.commandLinkButton.setIcon(QtGui.QIcon(resources_path('ui','arrow-bottom.png'))) - self.commandLinkButton_2.setIcon(QtGui.QIcon(resources_path('ui','arrow-up.png'))) + self.label_3.setPixmap(QtGui.QPixmap(resources_path('ui', 'logo.png'))) + self.commandLinkButton.setIcon(QtGui.QIcon(resources_path('ui', 'arrow-bottom.png'))) + self.commandLinkButton_2.setIcon(QtGui.QIcon(resources_path('ui', 'arrow-up.png'))) - #self.tableWidget.setSelectionBehavior(QTableWidget.selectRow) self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger(0)) - self.toolButton.setIcon(QtGui.QIcon(resources_path('ui','find.png'))) + self.toolButton.setIcon(QtGui.QIcon(resources_path('ui', 'find.png'))) self.comboBox_2.addItem("SIG") self.comboBox_2.addItem('REF') self.comboBox.currentIndexChanged.connect(self.initialisation_flux) @@ -224,11 +111,11 @@ class Flux_Editor(QDialog, EDITOR_CLASS): self.tableWidget_2.itemDoubleClicked.connect(self.suppression_flux) self.comboBox_2.currentIndexChanged.connect(self.bd_source) self.checkBox.hide() - self.checkBox.stateChanged.connect(self.modeCarte) + # self.checkBox.stateChanged.connect(self.modeCarte) self.toolButton.clicked.connect(self.getCanevas) layout = QVBoxLayout() self.lineEdit.textChanged.connect(self.filtre_dynamique) - self.viewer.textChanged.connect(self.NewTitle) + # self.viewer.textChanged.connect(self.NewTitle) layout.addWidget(self.lineEdit) self.viewer.hide() self.DeBUG.addItem('') @@ -237,21 +124,18 @@ class Flux_Editor(QDialog, EDITOR_CLASS): self.DeBUG.addItem('4269') self.DeBUG.hide() - #self.lineEdit.mousePressEvent = self._mousePressEvent - - #metadonnees_plugin = open(self.plugin_path + '/metadata.txt') - #infos_metadonnees = metadonnees_plugin.readlines() def raise_(self): """Run method that performs all the real work""" self.bd_source() + def ModeDeBUG(self): self.DeBUG.show() def mousePressEvent(self, event): global DeBUG if 330 <= event.pos().x() <= 560 and 5 <= event.pos().y() <= 75: - DeBUG = DeBUG+1 + DeBUG = DeBUG + 1 if DeBUG == 3: DeBUG = 0 self.ModeDeBUG() @@ -259,131 +143,17 @@ class Flux_Editor(QDialog, EDITOR_CLASS): DeBUG = 0 self.DeBUG.hide() + """ def NewTitle(self): if self.viewer.title() != '': Tsplit = ((self.viewer.title()).split('.')) - print(Tsplit[0],Tsplit[1]) - self.openPostGIS(Tsplit[0],Tsplit[1]) - - def modeCarte(self): - if self.checkBox.isChecked(): - self.viewer.show() - - cur.execute("SELECT ST_AsGeoJSON(st_centroid(ST_Transform(geom,4326))) FROM _agregation_ra._agreg_contour") - varcenter = literal_eval(cur.fetchall()[0][0]) - varcenter = [varcenter['coordinates'][1],varcenter['coordinates'][0]] - - cur.execute("SELECT ST_AsGeoJSON(ST_Transform(st_collect(geom),4326)),tschema,tname FROM _agregation_ra._agreg_contour WHERE geom IS NOT NULL GROUP BY tschema,tname;" ) - varSite = cur.fetchall() - cur.execute("SELECT ST_AsGeoJSON(ST_Transform(st_collect(geom),4326)),tschema,tname FROM _agregation_ra._agreg_travaux_prevus_poly WHERE geom IS NOT NULL GROUP BY tschema,tname;") - varTravaux = cur.fetchall() - cur.execute("SELECT ST_AsGeoJSON(ST_Transform(geom,4326)),milieu_libelle ,lb_eu_01,tschema,tname FROM _agregation_ra._agreg_eu_habitat WHERE geom IS NOT NULL;") - varHabitat = cur.fetchall() - - vargeomS = literal_eval(varSite[0][0]) - vargeomT = literal_eval(varTravaux[0][0]) - vargeomH = literal_eval(varHabitat[0][0]) - #new_objectS = self.SwitchGeom(vargeomS) - #new_objectT = self.SwitchGeom(vargeomT) - #new_objectH = self.SwitchGeom(vargeomH) - - script = 'var map = L.map("map").setView('+str(varcenter)+', 13);' - - id = 0 - varSiteJSON = '''var ParcelleJSON = { - "type": "FeatureCollection", - "features":[''' - for varP in varSite: - id = id+1 - varSiteJSON = varSiteJSON+'{"properties": {"code": "'+str(varP[1])+'.'+str(varP[2])+'" },'+str(varP[0][1:])+',' - varSiteJSON = varSiteJSON[:-1]+''']}; -var Sites = L.geoJSON(ParcelleJSON,{ - style: function(feature) { - switch (feature.geometry.properties.code) { - case 'Ensemble de sites': return {fillColor: "#9a7863",color:"white",weight: 1,fillOpacity: 0.7}; - case 'Sous-site conservatoire': return {fillColor: "#e69800",color:"white",weight: 1,fillOpacity: 0.7}; - case 'Site non géré': return {fillColor: "#73004c",color:"white",weight: 1,fillOpacity: 0.7}; - case 'Animation territoriale': return {fillColor: "#ffebaf",color:"white",weight: 1,fillOpacity: 0.7}; - case 'Site conservatoire': return {fillColor: "#f9ff08",color:"white",weight: 1,fillOpacity: 0.7}; - default: return {fillColor: "#c8c8c8",color:"white",weight: 1,fillOpacity: 0.7}; - } - }, - onEachFeature: function (feature,layer) { - layer.on('click', function(e) { - map.fitBounds(layer.getBounds()); - document.title = feature.properties.code.toString(); - }); - layer.on('mouseover', function(e) { - layer.setStyle({ - weight: 5, - color: '#fe0000', - dashArray: '', - }); - }); - //layer.on('mousemove', function(e) { - //layer.openPopup(e.latlng); - //}); - layer.on('mouseout', function(e) { - layer.setStyle({ - color:"white", - weight: 1, - }); - }); - layer.bindTooltip(feature.properties.code.toString(), { - sticky: true, - permanent: false, - direction: 'right', - className: 'label_parc' - }); - } -}).addTo(map);''' - id = 0 - varTravauxJSON = '''var TravauxJSON = { - "type": "FeatureCollection", - "features":[''' - for varT in varTravaux: - id = id+1 - varTravauxJSON = varTravauxJSON+'{"properties": {"code": "'+str(varT[1])+'.'+str(varT[2])+'" },'+str(varT[0][1:])+',' - varTravauxJSON = varTravauxJSON[:-1]+''']}; -var Travaux = L.geoJSON(TravauxJSON,{ - onEachFeature: function (feature,layer) { - layer.on('click', function(e) { - map.fitBounds(layer.getBounds()); - document.title = feature.properties.code.toString(); - }); - layer.on('mouseover', function(e) { - layer.setStyle({ - weight: 5, - color: '#fe0000', - dashArray: '', - }); - }); - //layer.on('mousemove', function(e) { - //layer.openPopup(e.latlng); - //}); - layer.on('mouseout', function(e) { - layer.setStyle({ - color:"white", - weight: 1, - }); - }); - layer.bindTooltip(feature.properties.code.toString(), { - sticky: true, - permanent: false, - direction: 'right', - className: 'label_parc' - }); - } -}).addTo(map);''' - script = script+varSiteJSON+varTravauxJSON - self.viewer.setHtml(html+script+font) - - else: - self.viewer.hide() + print(Tsplit[0], Tsplit[1]) + self.openPostGIS(Tsplit[0], Tsplit[1]) + """ def bd_source(self): self.activateWindow() - bd_origine=self.comboBox_2.currentText() + bd_origine = self.comboBox_2.currentText() if bd_origine == 'REF': self.run_ref() if bd_origine == 'SIG': @@ -392,17 +162,17 @@ var Travaux = L.geoJSON(TravauxJSON,{ def run_ref(self): """Run method that performs all the real work""" while self.tableWidget_2.rowCount() > 0: - self.tableWidget_2.removeRow(self.tableWidget_2.rowCount()-1) + self.tableWidget_2.removeRow(self.tableWidget_2.rowCount() - 1) # print(self.tableWidget_2.rowCount()) - global cur,con,dbtype - dbtype=refdb - con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbtype+" user=" + user + " password=" + mdp) - cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) + global cur, con, dbtype + dbtype = refdb + con = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + dbtype + " user=" + user + " password=" + mdp) + cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) self.initialisation_flux() self.combobox_custom() # Create the dialog with elements (after translation) and keep reference # Only create GUI ONCE in callback, so that it will only load when the plugin is started - if self.first_start == True: + if self.first_start is True: self.first_start = False # show the dialog self.show() @@ -417,16 +187,16 @@ var Travaux = L.geoJSON(TravauxJSON,{ def run_sig(self): """Run method that performs all the real work""" while self.tableWidget_2.rowCount() > 0: - self.tableWidget_2.removeRow(self.tableWidget_2.rowCount()-1) - global cur,con,dbtype - dbtype=sigdb - con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbtype+" user=" + user + " password=" + mdp) - cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor) + self.tableWidget_2.removeRow(self.tableWidget_2.rowCount() - 1) + global cur, con, dbtype + dbtype = sigdb + con = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + dbtype + " user=" + user + " password=" + mdp) + cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) self.initialisation_flux() self.combobox_custom() # Create the dialog with elements (after translation) and keep reference # Only create GUI ONCE in callback, so that it will only load when the plugin is started - if self.first_start == True: + if self.first_start is True: self.first_start = False # show the dialog self.show() @@ -441,26 +211,23 @@ var Travaux = L.geoJSON(TravauxJSON,{ def suppression_flux(self): self.tableWidget_2.removeRow(self.tableWidget_2.currentRow()) - def open_url(self, item): - url = item.data(Qt.UserRole) - def initialisation_flux(self): if dbtype == sigdb: # self.toolButton.setEnabled(1) if self.comboBox.currentText() == 'toutes les catégories': - custom_list=schemaname_list + custom_list = schemaname_list elif self.comboBox.currentText() == 'travaux': - custom_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables - where schemaname like '"""+ str(self.comboBox.currentText()) +"""%' order by schemaname,tablename) UNION (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews where schemaname like '"""+ str(self.comboBox.currentText()) +"""%' order by schemaname,tablename) order by schemaname,tablename;""" + custom_list = """(SELECT schemaname,tablename from pg_catalog.pg_tables + where schemaname like '""" + str(self.comboBox.currentText()) + """%' order by schemaname,tablename) UNION (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews where schemaname like '""" + str(self.comboBox.currentText()) + """%' order by schemaname,tablename) order by schemaname,tablename;""" else: - custom_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables - where schemaname like '\_"""+ str(self.comboBox.currentText()) +"""%' order by schemaname,tablename) UNION (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews where schemaname like '\_"""+ str(self.comboBox.currentText()) +"""%' order by schemaname,tablename) order by schemaname,tablename;""" + custom_list = """(SELECT schemaname,tablename from pg_catalog.pg_tables + where schemaname like '\\_""" + str(self.comboBox.currentText()) + """%' order by schemaname,tablename) UNION (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews where schemaname like '\\_""" + str(self.comboBox.currentText()) + """%' order by schemaname,tablename) order by schemaname,tablename;""" else: if self.comboBox.currentText() == 'toutes les catégories': - custom_list=schemaname_list_ref + custom_list = schemaname_list_ref else: - custom_list="""SELECT schemaname,tablename from pg_catalog.pg_tables - where schemaname like '"""+ str(self.comboBox.currentText()) +"""' order by schemaname,tablename;""" + custom_list = """SELECT schemaname,tablename from pg_catalog.pg_tables + where schemaname like '""" + str(self.comboBox.currentText()) + """' order by schemaname,tablename;""" cur.execute(custom_list) list_schema = cur.fetchall() @@ -473,66 +240,66 @@ var Travaux = L.geoJSON(TravauxJSON,{ self.tableWidget.setRowCount(len(list_schema)) self.tableWidget.setColumnCount(4) - i=0 + i = 0 for value in list_schema: if dbtype == sigdb: type_val = str(value[0])[1:3] - schema_name=str(value[0])[4:] - table_name=str(value[1][len(value[0])+1:]) + schema_name = str(value[0])[4:] + table_name = str(value[1][len(value[0]) + 1:]) if value[0] == value[1][:len(value[0])]: - table_name=str(value[1][len(value[0])+1:]) + table_name = str(value[1][len(value[0]) + 1:]) else: - table_name=str(value[1]) + table_name = str(value[1]) else: type_val = '' - schema_name=str(value[0]) - table_name=str(value[1]) + schema_name = str(value[0]) + table_name = str(value[1]) if type_val == 'fo': - type_val=str(value[0])[1:5] - schema_name=str(value[0])[6:] + type_val = str(value[0])[1:5] + schema_name = str(value[0])[6:] if value[0] == value[1][:len(value[0])]: - table_name=str(value[1][len(value[0])+1:]) + table_name = str(value[1][len(value[0]) + 1:]) else: - table_name=str(value[1]) + table_name = str(value[1]) elif type_val == 'ra': - type_val='travaux' - schema_name=str(value[0]) - table_name=str(value[1]) + type_val = 'travaux' + schema_name = str(value[0]) + table_name = str(value[1]) elif type_val != '00' and type_val != '01' and type_val != '07' and type_val != '26' and type_val != '42' and type_val != '69' and type_val != 'ra': - type_val='agregation' - schema_name=str(value[0]) - table_name=str(value[1]) + type_val = 'agregation' + schema_name = str(value[0]) + table_name = str(value[1]) - if (str(value[0])+'.'+str(value[1])) in RasterList: - SVG='mIconRaster.svg' + if (str(value[0]) + '.' + str(value[1])) in RasterList: + SVG = 'mIconRaster.svg' else: - SVG='mIconVecteur.svg' + SVG = 'mIconVecteur.svg' itemIcon = QTableWidgetItem() icon = QIcon() - icon.addPixmap(QtGui.QPixmap(resources_path('icons',SVG)), QIcon.Mode(0), QIcon.State(1)) + icon.addPixmap(QtGui.QPixmap(resources_path('icons', SVG)), QIcon.Mode(0), QIcon.State(1)) itemIcon.setIcon(icon) - self.tableWidget.setItem(i,0,itemIcon) + self.tableWidget.setItem(i, 0, itemIcon) item = QTableWidgetItem(type_val) - self.tableWidget.setItem(i,1,item) + self.tableWidget.setItem(i, 1, item) item = QTableWidgetItem(schema_name) - self.tableWidget.setItem(i,2,item) + self.tableWidget.setItem(i, 2, item) item = QTableWidgetItem(table_name) - self.tableWidget.setItem(i,3,item) - i=i+1 + self.tableWidget.setItem(i, 3, item) + i = i + 1 self.tableWidget.setColumnWidth(0, 20) self.tableWidget.setColumnWidth(1, 70) self.tableWidget.setColumnWidth(2, 300) self.tableWidget.setColumnWidth(3, 300) - self.tableWidget.setHorizontalHeaderLabels(["Type","Code","Schema","Table"]) + self.tableWidget.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table"]) def selection_flux(self): selected_row = 0 selected_items = self.tableWidget.selectedItems() # Assuming you want to compare items in the first column for uniqueness - #svgTake = (selected_items[2].tableWidget().cellWidget(0,0)) + # svgTake = (selected_items[2].tableWidget().cellWidget(0,0)) new_item_text = selected_items[3].text() if not self.item_already_exists(new_item_text): @@ -540,7 +307,7 @@ var Travaux = L.geoJSON(TravauxJSON,{ for column in range(self.tableWidget.columnCount()): cloned_item = selected_items[column].clone() - self.tableWidget_2.setHorizontalHeaderLabels(["Type","Code","Schema", "Table"]) + self.tableWidget_2.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table"]) self.tableWidget_2.setColumnCount(4) self.tableWidget_2.setItem(selected_row, column, cloned_item) @@ -549,22 +316,19 @@ var Travaux = L.geoJSON(TravauxJSON,{ self.tableWidget_2.setColumnWidth(2, 300) self.tableWidget_2.setColumnWidth(3, 300) - def item_already_exists(self, new_item_text): # Assuming you want to compare items in the first column for uniqueness existing_items = self.tableWidget_2.findItems(new_item_text, QtCore.Qt.MatchFlag(0)) # Check if there are any existing items with the same text in the first column return len(existing_items) > 0 - - def limite_flux(self): if self.tableWidget_2.rowCount() > 5: self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "Le nombre de flux à charger en une seule fois est limité à 5 pour des questions de performances. Souhaitez vous tout de même charger les " + str( self.tableWidget_2.rowCount()) + " flux sélectionnés ? (risque de plantage de QGIS)", - QMessageBox.StandardButton(0x00004000)|QMessageBox.StandardButton(0x00010000)) + QMessageBox.StandardButton(0x00004000) | QMessageBox.StandardButton(0x00010000)) if self.QMBquestion == QMessageBox.StandardButton(0x00004000): self.chargement_flux() @@ -573,11 +337,13 @@ var Travaux = L.geoJSON(TravauxJSON,{ if self.tableWidget_2.rowCount() <= 5: self.chargement_flux() - def openPostGIS(self,schema,table): - uri = QgsDataSourceUri() - uri.setConnection(host ,port ,sigdb ,user ,mdp) - if (schema+'.'+table) in RasterList: + """ + def openPostGIS(self, schema, table): + uri = QgsDataSourceUri() + uri.setConnection(host, port, sigdb, user, mdp) + + if (schema + '.' + table) in LRasterList: uri.setDataSource(schema, table, "rast") uri.setKeyColumn('rid') uri.setSrid('2154') @@ -589,11 +355,11 @@ var Travaux = L.geoJSON(TravauxJSON,{ layer = QgsVectorLayer(uri.uri(), table, "postgres") # Ajout de la couche au canevas QGIS QgsProject.instance().addMapLayer(layer) + """ def chargement_flux(self): - managerAU = QgsApplication.authManager() - k = managerAU.availableAuthMethodConfigs().keys() + managerAU.availableAuthMethodConfigs().keys() def REQUEST(type): switcher = { @@ -605,10 +371,8 @@ var Travaux = L.geoJSON(TravauxJSON,{ } return switcher.get(type, "nothing") - - - def displayOnWindows(type, uri, name): - p = [] + # def displayOnWindows(type, uri, name): + # p = [] SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """ cur.execute(SQLraster) @@ -619,26 +383,27 @@ var Travaux = L.geoJSON(TravauxJSON,{ for row in range(0, self.tableWidget_2.rowCount()): color_rgba = 855030089 - if self.tableWidget_2.item(row, 1).background().color().rgba() != 855030089: - ## supression de la partie de l'url après le point d'interrogation + if self.tableWidget_2.item(row, 1).background().color().rgba() != color_rgba: + # supression de la partie de l'url après le point d'interrogation if dbtype == sigdb: - code = self.tableWidget_2.item(row,1).text() - schema = '_'+code+'_'+self.tableWidget_2.item(row,2).text() - if code == 'travaux' or code == 'agregation' : - schema = self.tableWidget_2.item(row,2).text() - table = self.tableWidget_2.item(row,3).text() + code = self.tableWidget_2.item(row, 1).text() + schema = '_' + code + '_' + self.tableWidget_2.item(row, 2).text() + if code == 'travaux' or code == 'agregation': + schema = self.tableWidget_2.item(row, 2).text() + table = self.tableWidget_2.item(row, 3).text() else: - table = self.tableWidget_2.item(row,3).text() - table = schema+'_'+table + table = self.tableWidget_2.item(row, 3).text() + table = schema + '_' + table elif dbtype == refdb: -# code = self.tableWidget_2.item(row,1).text() - schema = self.tableWidget_2.item(row,2).text() - table = self.tableWidget_2.item(row,3).text()#.split("?", 1)[0] + # code = self.tableWidget_2.item(row,1).text() + schema = self.tableWidget_2.item(row, 2).text() + table = self.tableWidget_2.item(row, 3).text() + # .split("?", 1)[0] uri = QgsDataSourceUri() - uri.setConnection(host ,port ,dbtype ,user ,mdp) + uri.setConnection(host, port, dbtype, user, mdp) # nom du schéma à remplacer: "hydrographie" à supprimer et mettre "couches_collaboratives" lorsqu'on aura regroupé les couches à modifier dans un même schéma - if (schema+'.'+table) in RasterList: + if (schema + '.' + table) in RasterList: uri.setDataSource(schema, table, "rast") uri.setKeyColumn('rid') uri.setSrid('2154') @@ -649,7 +414,7 @@ var Travaux = L.geoJSON(TravauxJSON,{ uri.setKeyColumn('gid') # Chargement de la couche PostGIS - geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a' + geom_type = 'SELECT right(st_geometrytype(geom),-3) as a FROM ' + schema + '.' + table + ' GROUP BY a' cur.execute(geom_type) list_typegeom = cur.fetchall() if len(list_typegeom) > 1: @@ -666,7 +431,7 @@ var Travaux = L.geoJSON(TravauxJSON,{ uri.setWkbType(QgsWkbTypes.LineString) elif typegeom[0] == 'MultiPoint': uri.setWkbType(QgsWkbTypes.MultiPoint) - if (typegeom[0] != None and typegeom[0] != 'Polygon'): + if (typegeom[0] is not None and typegeom[0] != 'Polygon'): uri.setSrid('2154') layer = QgsVectorLayer(uri.uri(), table, "postgres") # Ajout de la couche au canevas QGIS @@ -676,7 +441,8 @@ var Travaux = L.geoJSON(TravauxJSON,{ # Ajout de la couche au canevas QGIS QgsProject.instance().addMapLayer(layer) else: - self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !","La couche «" + str(self.tableWidget_2.item(row,1).text()) +' '+ str(self.tableWidget_2.item(row,2).text()) + "» ne ce trouve pas dans cette BD !",QMessageBox.StandardButton(0x00004000)) + self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !", "La couche «" + str(self.tableWidget_2.item(row, 1).text()) + ' ' + str(self.tableWidget_2.item(row, 2).text()) + "» ne ce trouve pas dans cette BD !", QMessageBox.StandardButton(0x00004000)) + def combobox_custom(self): if dbtype == sigdb: self.toolButton.setEnabled(1) @@ -693,7 +459,7 @@ var Travaux = L.geoJSON(TravauxJSON,{ self.comboBox.addItem('form') if dbtype == refdb: self.toolButton.setEnabled(0) - custom_list=schemaname_distinct + custom_list = schemaname_distinct cur.execute(custom_list) list_schema = cur.fetchall() self.comboBox.clear() @@ -703,7 +469,7 @@ var Travaux = L.geoJSON(TravauxJSON,{ def filtre_dynamique(self, filter_text): if filter_text.find(' ') >= 0: - filter_text=filter_text.replace(" ","_") + filter_text = filter_text.replace(" ", "_") for i in range(self.tableWidget.rowCount()): for j in range(self.tableWidget.columnCount()): item = self.tableWidget.item(i, j) @@ -714,14 +480,14 @@ var Travaux = L.geoJSON(TravauxJSON,{ def getCanevas(self): poly = iface.mapCanvas().extent() - geom = (str(poly.xMinimum())+','+str(poly.yMinimum())+','+str(poly.xMaximum())+','+str(poly.yMaximum())) + geom = (str(poly.xMinimum()) + ',' + str(poly.yMinimum()) + ',' + str(poly.xMaximum()) + ',' + str(poly.yMaximum())) - SQL_GEOM_CONTOUR = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_contour" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" - SQL_GEOM_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" - SQL_GEOM_EU_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_eu_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" - SQL_GEOM_TRAVAUX_PREVUS_LIGNE = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_ligne" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" - SQL_GEOM_TRAVAUX_PREVUS_POINT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_point" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" - SQL_GEOM_TRAVAUX_PREVUS_POLY = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_poly" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname" + SQL_GEOM_CONTOUR = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_contour" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" + SQL_GEOM_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_habitat" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" + SQL_GEOM_EU_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_eu_habitat" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_LIGNE = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_ligne" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_POINT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_point" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" + SQL_GEOM_TRAVAUX_PREVUS_POLY = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_poly" WHERE st_intersects(geom,ST_MakeEnvelope(""" + geom + ",2154)) ORDER BY tname" cur.execute(SQL_GEOM_CONTOUR) TableContour = cur.fetchall() @@ -736,11 +502,11 @@ var Travaux = L.geoJSON(TravauxJSON,{ cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY) TableTravauxPoly = cur.fetchall() - TableHaveGeom = sorted(TableContour+TableHabitat+TableEuHabitat+TableTravauxLigne+TableTravauxPoint+TableTravauxPoly) + TableHaveGeom = sorted(TableContour + TableHabitat + TableEuHabitat + TableTravauxLigne + TableTravauxPoint + TableTravauxPoly) row_count = 0 self.tableWidget.setRowCount(0) for e in TableHaveGeom: - cur.execute("""SELECT DISTINCT count(*) FROM pg_catalog.pg_tables WHERE schemaname LIKE '"""+e[0]+"""' AND tablename LIKE '"""+e[1]+"""';""") + cur.execute("""SELECT DISTINCT count(*) FROM pg_catalog.pg_tables WHERE schemaname LIKE '""" + e[0] + """' AND tablename LIKE '""" + e[1] + """';""") TableSomme = cur.fetchall()[0][0] if e[0][1:3] != 'fo': @@ -749,35 +515,34 @@ var Travaux = L.geoJSON(TravauxJSON,{ else: DepName = QTableWidgetItem('form') SchemaName = QTableWidgetItem(e[0][6:]) - TableName = QTableWidgetItem(e[1][len(e[0])+1:]) + TableName = QTableWidgetItem(e[1][len(e[0]) + 1:]) self.tableWidget.insertRow(row_count) itemIcon = QTableWidgetItem() icon = QIcon() - icon.addPixmap(QtGui.QPixmap(resources_path('icons','mIconVecteur.svg')), QIcon.Mode(0), QIcon.State(1)) + icon.addPixmap(QtGui.QPixmap(resources_path('icons', 'mIconVecteur.svg')), QIcon.Mode(0), QIcon.State(1)) itemIcon.setIcon(icon) - self.tableWidget.setItem(row_count,0,itemIcon) - self.tableWidget.setItem(row_count,1,DepName) - self.tableWidget.setItem(row_count,2,SchemaName) - self.tableWidget.setItem(row_count,3,TableName) + self.tableWidget.setItem(row_count, 0, itemIcon) + self.tableWidget.setItem(row_count, 1, DepName) + self.tableWidget.setItem(row_count, 2, SchemaName) + self.tableWidget.setItem(row_count, 3, TableName) if TableSomme == 0: for j in range(self.tableWidget.columnCount()): - self.tableWidget.item(row_count, j).setBackground(QtGui.QColor(246, 185, 73,50)) - self.tableWidget.item(row_count,j).setToolTip('Couche dans une autre BD !') - row_count = row_count+1 + self.tableWidget.item(row_count, j).setBackground(QtGui.QColor(246, 185, 73, 50)) + self.tableWidget.item(row_count, j).setToolTip('Couche dans une autre BD !') + row_count = row_count + 1 if self.lineEdit.text() != 'Recherche par mots-clés': self.filtre_dynamique(self.lineEdit.text()) - def SwitchGeom(self,vargeom): + def SwitchGeom(self, vargeom): new_object = '[' obj = vargeom['coordinates'][0][0] for obj_X in obj: - new_object = new_object+'['+str(obj_X[1])+','+str(obj_X[0])+'],' - new_object = new_object[:-1]+']' - return(new_object) + new_object = new_object + '[' + str(obj_X[1]) + ',' + str(obj_X[0]) + '],' + new_object = new_object[:-1] + ']' + return (new_object) - def popup(self): - - self.dialog = Popup() # +++ - self - self.dialog.text_edit.show() \ No newline at end of file + # def popup(self): + # self.dialog = Popup() # +++ - self + # self.dialog.text_edit.show() diff --git a/CenRa_FLUX/issues.py b/CenRa_FLUX/issues.py index eeda1fc..d97f9aa 100644 --- a/CenRa_FLUX/issues.py +++ b/CenRa_FLUX/issues.py @@ -1,9 +1,4 @@ import os -plugin_dir = os.path.dirname(__file__) -end_find = plugin_dir.rfind('\\')+1 - -NAME = plugin_dir[end_find:] - from qgis.gui import * from qgis.core import ( @@ -34,21 +29,25 @@ from qgis.utils import iface from .tools.resources import ( load_ui, - resources_path, + # resources_path, send_issues, ) +plugin_dir = os.path.dirname(__file__) +end_find = plugin_dir.rfind('\\') + 1 + +NAME = plugin_dir[end_find:] EDITOR_CLASS = load_ui('CenRa_IssuesSend.ui') -class CenRa_Issues(QDialog, EDITOR_CLASS): +class CenRa_Issues(QDialog, EDITOR_CLASS): def __init__(self, parent=None): _ = parent super().__init__() self.setupUi(self) self.settings = QgsSettings() - #place connect here + # place connect here self.annuler_button.clicked.connect(self.close) self.ok_button.clicked.connect(self.run_sendissues) @@ -62,17 +61,22 @@ class CenRa_Issues(QDialog, EDITOR_CLASS): statu_autre = self.check_autre.isChecked() statu = [] - if statu_bug == True : statu = statu + [1] - if statu_aide == True : statu = statu + [3] - if statu_question == True : statu = statu + [5] - if statu_amelioration == True : statu = statu + [2] - if statu_autre == True : statu = statu + [6] + if statu_bug is True: + statu = statu + [1] + if statu_aide is True: + statu = statu + [3] + if statu_question is True: + statu = statu + [5] + if statu_amelioration is True: + statu = statu + [2] + if statu_autre is True: + statu = statu + [6] if len(statu) >= 1: import qgis - url = qgis.utils.pluginMetadata(NAME,'tracker') + url = qgis.utils.pluginMetadata(NAME, 'tracker') print(text_message) - send_info = send_issues(url,text_titre,text_message,statu) + send_info = send_issues(url, text_titre, text_message, statu) code = send_info.status_code print(code) else: diff --git a/CenRa_FLUX/tools/HubToTea.py b/CenRa_FLUX/tools/HubToTea.py index 7428d53..4617db7 100644 --- a/CenRa_FLUX/tools/HubToTea.py +++ b/CenRa_FLUX/tools/HubToTea.py @@ -1,7 +1,8 @@ from qgis.core import QgsApplication + def gitea(): - file_url = QgsApplication.qgisSettingsDirPath()+'QGIS/QGIS3.ini' + file_url = QgsApplication.qgisSettingsDirPath() + 'QGIS/QGIS3.ini' recherche_1 = 'plugin_repositories\\github\\url=https://github.com/CEN-Rhone-Alpes/Plugin_QGIS/releases/latest/download/plugins.xml' replace_1 = 'plugin_repositories\\gitea\\url=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' @@ -18,4 +19,4 @@ def gitea(): # Write the file out again with open(file_url, 'w') as file: - file.write(filedata) \ No newline at end of file + file.write(filedata) diff --git a/CenRa_FLUX/tools/SQLRequet.py b/CenRa_FLUX/tools/SQLRequet.py index 721a3fa..d0df4c3 100644 --- a/CenRa_FLUX/tools/SQLRequet.py +++ b/CenRa_FLUX/tools/SQLRequet.py @@ -1,17 +1,17 @@ -schemaname_distinct="""SELECT DISTINCT schemaname from pg_catalog.pg_tables +schemaname_distinct = """SELECT DISTINCT schemaname from pg_catalog.pg_tables WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier' order by schemaname;""" -schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables - WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier' - order by schemaname,tablename;""" -schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables - where schemaname like 'trav%' or schemaname like '\_ag%' or schemaname like '\_00%' or schemaname like '\_01%' or schemaname like '\_07%' or schemaname like '\_26%' or schemaname like '\_form%' or schemaname like '\_42%' or schemaname like '\_69%' order by schemaname,tablename) - UNION - (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;""" +schemaname_list_ref = """SELECT schemaname,tablename from pg_catalog.pg_tables + WHERE schemaname NOT LIKE '_archives' AND schemaname NOT LIKE 'topology' AND schemaname NOT LIKE 'information_schema' AND schemaname NOT LIKE 'pg_catalog' and schemaname NOT LIKE 'public' AND schemaname NOT LIKE '_trier' + order by schemaname,tablename;""" +schemaname_list = """(SELECT schemaname,tablename from pg_catalog.pg_tables + where schemaname like 'trav%' or schemaname like '\\_ag%' or schemaname like '\\_00%' or schemaname like '\\_01%' or schemaname like '\\_07%' or schemaname like '\\_26%' or schemaname like '\\_form%' or schemaname like '\\_42%' or schemaname like '\\_69%' order by schemaname,tablename) + UNION + (SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;""" geom = "geom" -champ_travaux_prevus_multipolygon="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))""" -champ_travaux_prevus_multilinestring="""(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))""" +champ_travaux_prevus_multipolygon = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, surface_m2 double precision, surface_ha double precision, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))""" +champ_travaux_prevus_multilinestring = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, longueur_m double precision, longueur_km double precision, date_creation date, date_maj date, geom geometry(MultiLineString,2154))""" champ_travaux_prevus_point = """(gid serial NOT NULL, groupe_gestion text, gestion_lib text, id_gestion text, datedebut date, datefin date, commentaire text, x_wgs84 double precision, y_wgs84 double precision, date_creation date, date_maj date, geom geometry(Point,2154))""" champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))""" @@ -20,7 +20,7 @@ champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double pr champ_habitat = """(gid serial NOT NULL, cd_cb_01 text, lb_cb97_fr_01 text, occupation_01 integer, cd_cb_02 text, lb_cb97_fr_02 text, occupation_02 integer, cd_cb_03 text, lb_cb97_fr_03 text, occupation_03 integer, milieu_code text, milieu_libelle text, surface_m2 double precision, surface_ha double precision, commentaire text, date_creation date, date_maj date, geom geometry(MultiPolygon,2154))""" -champ_contour="""(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154)) +champ_contour = """(gid serial NOT NULL, date_creation date, date_maj date, utilisateur character varying, dept character(2), nom character varying, surface_m2 double precision, surface_ha double precision, type_site character varying, type_milieu character varying, date_premier_pg integer, date_debut_pg integer, date_fin_pg integer, referent character varying, gestion_deleguee character varying, terrain_militaire character(3), ens character(3), zh character(3), adapt_pmr character(3), inform character(3), guide character(3), ouverture_public character(3), obs character(3), anim character(3), n2000_anim character(3), contrat_n2000_conseil character(3), n2000_op character(3), contrat_n2000_benef character(3), contrat_agri character(3), bc_habitat integer, bc_amphibien integer, bc_coleoptere integer, bc_crustace integer, bc_mammifere integer, bc_chiroptere integer, bc_mollusque integer, bc_odonate integer, bc_oiseau integer, bc_orthoptere integer, bc_poisson integer, bc_reptile integer, bc_rhopalocere integer, bc_heterocere integer, bc_autre_invertebre integer, bc_flore integer, bc_bryophyte integer, bc_champignon integer, suiv_analyse_sol character(3), suiv_piezo character(3), suiv_climat character(3), suiv_topo character(3), suiv_habitat character(3), suiv_amphibien character(3), suiv_coleoptere character(3), suiv_crustace character(3), suiv_mammifere character(3), suiv_chiroptere character(3), suiv_mollusque character(3), suiv_odonate character(3), suiv_oiseau character(3), suiv_orthoptere character(3), suiv_poisson character(3), suiv_reptile character(3), suiv_rhopalocere character(3), suiv_heterocere character(3), suiv_autre_invertebre character(3), suiv_flore character(3), suiv_bryophyte character(3), suiv_champignon character(3), suiv_analyse_eau character(3), suiv_phenologie character(3), suiv_frequentation character(3), suiv_paysager character(3), suiv_autre character(3), commentaire text, geom geometry(MultiPolygon,2154)) """ champ_vegethab_point = """( @@ -148,4 +148,4 @@ champ_vegethab_multipolygon = """( class_name character varying(254) COLLATE pg_catalog."default", geom geometry(MultiPolygon,2154) ) -""" \ No newline at end of file +""" diff --git a/CenRa_FLUX/tools/resources.py b/CenRa_FLUX/tools/resources.py index b7d3549..482320f 100644 --- a/CenRa_FLUX/tools/resources.py +++ b/CenRa_FLUX/tools/resources.py @@ -77,15 +77,17 @@ def plugin_test_data_path(*args, copy=False): else: return path + def pyperclip(): - dst = dirname(dirname(__file__))+"\\tools\\" - if os.access('N:/',os.R_OK): + dst = dirname(dirname(__file__)) + "\\tools\\" + if os.access('N:/', os.R_OK): src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py' try: shutil.copy(src, dst) - except: + except NameError: print('404') + def resources_path(*args): """Get the path to our resources folder. @@ -112,62 +114,65 @@ def load_ui(*args): ui_class, _ = uic.loadUiType(resources_path("ui", *args)) return ui_class -def send_issues(url,titre,body,labels): + + +def send_issues(url, titre, body, labels): import requests import json - import os - import qgis + # import os + # import qgis - usr = os.environ['USERNAME'] + # usr = os.environ['USERNAME'] token = '9d0a4e0bea561710e0728f161f7edf4e5201e112' - url=url+'?token='+token - - headers = {'Authorization': 'token ' + token,'accept': 'application/json','Content-Type': 'application/json'} + url = url + '?token=' + token + headers = {'Authorization': 'token ' + token, 'accept': 'application/json', 'Content-Type': 'application/json'} payload = {'title': titre, 'body': body, 'labels': labels} try: urllib.request.urlopen('https://google.com') binar = True - except: + except NameError: binar = False r = '' if binar: r = requests.post(url, data=json.dumps(payload), headers=headers) return r + def maj_verif(NAME): import qgis import urllib.request iface = qgis.utils.iface from qgis.core import Qgis - url = qgis.utils.pluginMetadata(NAME,'repository') - #URL = url+'/raw/branch/main/plugins.xml' + # url = qgis.utils.pluginMetadata(NAME, 'repository') + # URL = url+'/raw/branch/main/plugins.xml' URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml' -# print(URL) - version = qgis.utils.pluginMetadata(NAME,'version') + # print(URL) + version = qgis.utils.pluginMetadata(NAME, 'version') len_version = len(version) try: urllib.request.urlopen('https://google.com') binar = True - except: + except NameError: binar = False if binar: try: version_web = str(urllib.request.urlopen(URL).read()) plugin_num = version_web.find(NAME) - valeur_version_web = version_web.find('',plugin_num)+9 - version_plugin = version_web[valeur_version_web:valeur_version_web+len_version] + valeur_version_web = version_web.find('', plugin_num) + 9 + version_plugin = version_web[valeur_version_web: valeur_version_web + len_version] if version_plugin != version: iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30) - except: + except NameError: print("error gitea version ssl") else: iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30) + def devlog(NAME): import qgis devmaj = '' - devmaj = devmaj+qgis.utils.pluginMetadata(NAME,'changelog') - return devmaj \ No newline at end of file + devmaj = devmaj + qgis.utils.pluginMetadata(NAME, 'changelog') + return devmaj