flake8
This commit is contained in:
parent
94cac31fbb
commit
1cd816c706
@ -4,28 +4,25 @@ __email__ = "info@3liz.org"
|
|||||||
|
|
||||||
|
|
||||||
from qgis.core import QgsApplication
|
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.QtGui import QDesktopServices, QIcon
|
||||||
from qgis.PyQt.QtWidgets import QAction, QMessageBox
|
from qgis.PyQt.QtWidgets import QAction
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import qgis
|
import qgis
|
||||||
|
|
||||||
|
# include <QSettings>
|
||||||
|
|
||||||
#include <QSettings>
|
|
||||||
import socket
|
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
|
||||||
pyperclip,
|
pyperclip,
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
pyperclip()
|
pyperclip()
|
||||||
|
|
||||||
from .flux_editor import Flux_Editor
|
from .flux_editor import Flux_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from qgis.PyQt.QtCore import *
|
|
||||||
|
|
||||||
|
|
||||||
class PgFlux:
|
class PgFlux:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -37,18 +34,18 @@ class PgFlux:
|
|||||||
self.dock_action = None
|
self.dock_action = None
|
||||||
self.help_action = None
|
self.help_action = None
|
||||||
plugin_dir = os.path.dirname(__file__)
|
plugin_dir = os.path.dirname(__file__)
|
||||||
end_find = plugin_dir.rfind('\\')+1
|
end_find = plugin_dir.rfind('\\') + 1
|
||||||
global NAME
|
global NAME
|
||||||
NAME = plugin_dir[end_find:]
|
NAME = plugin_dir[end_find:]
|
||||||
maj_verif(NAME)
|
maj_verif(NAME)
|
||||||
|
|
||||||
# Display About window on first use
|
# Display About window on first use
|
||||||
version = qgis.utils.pluginMetadata('CenRa_FLUX','version')
|
version = qgis.utils.pluginMetadata('CenRa_FLUX', 'version')
|
||||||
s = QSettings()
|
s = QSettings()
|
||||||
versionUse = s.value("flux/version", 1, type=str)
|
versionUse = s.value("flux/version", 1, type=str)
|
||||||
if str(versionUse) != str(version) :
|
if str(versionUse) != str(version):
|
||||||
s.setValue("flux/version", str(version))
|
s.setValue("flux/version", str(version))
|
||||||
print(versionUse,version)
|
print(versionUse, version)
|
||||||
self.open_about_dialog()
|
self.open_about_dialog()
|
||||||
|
|
||||||
def initGui(self):
|
def initGui(self):
|
||||||
@ -65,13 +62,11 @@ class PgFlux:
|
|||||||
self.help_action.triggered.connect(self.open_help)
|
self.help_action.triggered.connect(self.open_help)
|
||||||
if not self.action_editor:
|
if not self.action_editor:
|
||||||
self.action_editor = Flux_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.toolBar.addAction(self.flux_editor)
|
||||||
self.flux_editor.triggered.connect(self.open_editor)
|
self.flux_editor.triggered.connect(self.open_editor)
|
||||||
self.flux_editor.setEnabled(False)
|
self.flux_editor.setEnabled(False)
|
||||||
if os.access('N:/',os.R_OK):
|
if os.access('N:/', os.R_OK):
|
||||||
self.flux_editor.setEnabled(True)
|
self.flux_editor.setEnabled(True)
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
@ -80,6 +75,7 @@ class PgFlux:
|
|||||||
"""
|
"""
|
||||||
dialog = AboutDialog(iface)
|
dialog = AboutDialog(iface)
|
||||||
dialog.exec()
|
dialog.exec()
|
||||||
|
|
||||||
def open_help():
|
def open_help():
|
||||||
""" Open the online help. """
|
""" Open the online help. """
|
||||||
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
|
||||||
@ -91,8 +87,7 @@ class PgFlux:
|
|||||||
def unload(self):
|
def unload(self):
|
||||||
""" Unload the plugin. """
|
""" Unload the plugin. """
|
||||||
if self.action_editor:
|
if self.action_editor:
|
||||||
iface.removePluginMenu('CenRa_Flux',self.flux_editor)
|
iface.removePluginMenu('CenRa_Flux', self.flux_editor)
|
||||||
|
|
||||||
|
|
||||||
if self.provider:
|
if self.provider:
|
||||||
QgsApplication.processingRegistry().removeProvider(self.provider)
|
QgsApplication.processingRegistry().removeProvider(self.provider)
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import os.path
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
from qgis.PyQt.QtGui import QPixmap
|
# from qgis.PyQt.QtGui import QPixmap
|
||||||
from qgis.PyQt.QtWidgets import QDialog
|
from qgis.PyQt.QtWidgets import QDialog
|
||||||
|
|
||||||
from .tools.resources import devlog
|
from .tools.resources import devlog
|
||||||
@ -43,4 +43,4 @@ class AboutDialog(QDialog, ABOUT_FORM_CLASS):
|
|||||||
Run some actions when
|
Run some actions when
|
||||||
the user closes the dialog
|
the user closes the dialog
|
||||||
"""
|
"""
|
||||||
self.close()
|
self.close()
|
||||||
|
|||||||
@ -2,71 +2,67 @@
|
|||||||
|
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
# Import the PyQt and QGIS libraries
|
# Import the PyQt and QGIS libraries
|
||||||
from builtins import next
|
# from builtins import next
|
||||||
from builtins import str
|
from builtins import str
|
||||||
from builtins import object
|
# from builtins import object
|
||||||
import qgis
|
|
||||||
from qgis.PyQt import QtCore
|
from qgis.PyQt import QtCore, QtGui
|
||||||
from qgis.PyQt.QtCore import QSettings
|
from qgis.PyQt.QtCore import QSettings
|
||||||
from qgis.PyQt import QtWidgets
|
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
|
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.PyQt.QtCore import *
|
||||||
from qgis.core import QgsDataSourceUri
|
|
||||||
|
# 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 (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
# QAction,
|
||||||
QDockWidget,
|
# QDockWidget,
|
||||||
QFileDialog,
|
# QFileDialog,
|
||||||
QInputDialog,
|
# QInputDialog,
|
||||||
QMenu,
|
# QMenu,
|
||||||
QToolButton,
|
# QToolButton,
|
||||||
QTableWidget,
|
# QTableWidget,
|
||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
QMessageBox,
|
QMessageBox,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from .tools.SQLRequet import *
|
from .tools.SQLRequet import schemaname_list, schemaname_list_ref, schemaname_distinct
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
send_issues,
|
# send_issues,
|
||||||
)
|
)
|
||||||
try:
|
try:
|
||||||
from .tools.PythonSQL import login_base
|
from .tools.PythonSQL import login_base
|
||||||
except:
|
except NameError:
|
||||||
print('Pas de fichier PythonSQL')
|
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
|
from qgis.utils import iface
|
||||||
import os.path
|
# import os.path
|
||||||
import webbrowser, os
|
# import os
|
||||||
|
# import webbrowser
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import base64
|
# import base64
|
||||||
|
|
||||||
global DeBUG
|
global DeBUG
|
||||||
DeBUG = 0
|
DeBUG = 0
|
||||||
|
|
||||||
itemIconRaster = QTableWidgetItem()
|
itemIconRaster = QTableWidgetItem()
|
||||||
icon = QIcon()
|
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)
|
itemIconRaster.setIcon(icon)
|
||||||
|
|
||||||
itemIconVecteur = QTableWidgetItem()
|
itemIconVecteur = QTableWidgetItem()
|
||||||
icon = QIcon()
|
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)
|
itemIconVecteur.setIcon(icon)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -79,141 +75,32 @@ try:
|
|||||||
sigdb = account[5]
|
sigdb = account[5]
|
||||||
refdb = account[6]
|
refdb = account[6]
|
||||||
|
|
||||||
except:
|
except NameError:
|
||||||
print('Fails to login DB for account')
|
print('Fails to login DB for account')
|
||||||
|
|
||||||
EDITOR_CLASS = load_ui('CenRa_Flux_base.ui')
|
EDITOR_CLASS = load_ui('CenRa_Flux_base.ui')
|
||||||
html = '''<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
|
||||||
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
|
|
||||||
crossorigin=""/>
|
|
||||||
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
|
|
||||||
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
|
|
||||||
crossorigin=""></script>
|
|
||||||
<style>
|
|
||||||
body { padding: 0; margin: 0; }
|
|
||||||
html, body, #map { height: 100%; }
|
|
||||||
.leaflet-control-layers-toggle {
|
|
||||||
background-image: url(https://intranet.cenra-outils.org/Intranet/css/images/layers.png);
|
|
||||||
}
|
|
||||||
.legend_parc {
|
|
||||||
border-radius: 15px;
|
|
||||||
box-shadow: 2px 2px 3px 0 #6a6a6a;
|
|
||||||
background-color: #fefafab3;
|
|
||||||
opacity:0;
|
|
||||||
}
|
|
||||||
.legend_parc:hover{
|
|
||||||
opacity:1;
|
|
||||||
}
|
|
||||||
.popup-with-no-events {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="map"></div>
|
|
||||||
<script src="map.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
<script>'''
|
|
||||||
font = '''var OrthoIGN = L.tileLayer('https://wmts.geopf.fr/wmts?'+
|
|
||||||
'&LAYER={ignLayer}&STYLE={style}&TILEMATRIXSET=PM'+
|
|
||||||
'&SERVICE={service}&REQUEST=GetTile&VERSION=1.0.0'+
|
|
||||||
'&FORMAT={format}&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}',
|
|
||||||
{
|
|
||||||
ignLayer: 'ORTHOIMAGERY.ORTHOPHOTOS',
|
|
||||||
style: 'normal',
|
|
||||||
service: 'WMTS',
|
|
||||||
format: 'image/jpeg',
|
|
||||||
minZoom: 0,
|
|
||||||
maxZoom: 19,
|
|
||||||
attribution: '© IGN'
|
|
||||||
}).addTo(map);
|
|
||||||
// Plan IGN avec une transparence de 50%
|
|
||||||
var PlanIGN = L.tileLayer('https://wmts.geopf.fr/wmts?'+
|
|
||||||
'&LAYER={ignLayer}&STYLE={style}&TILEMATRIXSET=PM'+
|
|
||||||
'&SERVICE={service}&REQUEST=GetTile&VERSION=1.0.0'+
|
|
||||||
'&FORMAT={format}&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}',
|
|
||||||
{
|
|
||||||
ignLayer: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2',
|
|
||||||
style: 'normal',
|
|
||||||
service: 'WMTS',
|
|
||||||
format: 'image/png',
|
|
||||||
minZoom: 0,
|
|
||||||
maxZoom: 19,
|
|
||||||
attribution: '© IGN'
|
|
||||||
});
|
|
||||||
var baseMaps = {
|
|
||||||
// "BDORTHO2" : bdortho,
|
|
||||||
// "Openstreetmap": openStreetMap,
|
|
||||||
// "Opentopomap": openTopoMap,
|
|
||||||
"BDORTHO" : OrthoIGN,
|
|
||||||
"PlanIGN": PlanIGN
|
|
||||||
};
|
|
||||||
var overlayMaps = {
|
|
||||||
"Sites": Sites,
|
|
||||||
//"Parcelle":JSON
|
|
||||||
};
|
|
||||||
L.control.layers(baseMaps,overlayMaps).addTo(map);
|
|
||||||
var scale = L.control.scale({position: 'bottomleft', metric:true, imperial:false});
|
|
||||||
scale.addTo(map);
|
|
||||||
var legend = L.control({position: 'bottomleft'});
|
|
||||||
|
|
||||||
legend.onAdd = function (map) {
|
|
||||||
var div = L.DomUtil.create('div', 'info legend_parc'),
|
|
||||||
labels = [];
|
|
||||||
labels.push('<i style="background:#73004c;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ff00c5;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquis en partie BND')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#f0ade1ab;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition pour partie')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#73462e;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Acquisition / Convention')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#e69800;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ffd37f;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention en partie BND')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#ffebaf;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Convention pour partie')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#c8c8c8;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Autre')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#f9ff08;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Projet en cours')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#fe0000;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Problème de mise à jour')
|
|
||||||
|
|
||||||
labels.push('<i style="background:#000;width:18px;height:18px;float:left;margin-right:8px;opacity: 0.7;"></i> Pas de maitrise')
|
|
||||||
|
|
||||||
div.innerHTML = labels.join('<br>');
|
|
||||||
return div;
|
|
||||||
};
|
|
||||||
|
|
||||||
legend.addTo(map);
|
|
||||||
</script>'''
|
|
||||||
targetCrs = QgsCoordinateReferenceSystem('EPSG:4326')
|
targetCrs = QgsCoordinateReferenceSystem('EPSG:4326')
|
||||||
layerCrs = QgsCoordinateReferenceSystem('EPSG:2154')
|
layerCrs = QgsCoordinateReferenceSystem('EPSG:2154')
|
||||||
TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs,QgsProject.instance())
|
TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs, QgsProject.instance())
|
||||||
|
|
||||||
|
|
||||||
class Flux_Editor(QDialog, EDITOR_CLASS):
|
class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
_ = parent
|
_ = parent
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settings = QgsSettings()
|
self.settings = QgsSettings()
|
||||||
self.s = QSettings()
|
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.first_start = None
|
||||||
self.iface = iface
|
self.iface = iface
|
||||||
self.label_3.setPixmap(QtGui.QPixmap(resources_path('ui','logo.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.setIcon(QtGui.QIcon(resources_path('ui', 'arrow-bottom.png')))
|
||||||
self.commandLinkButton_2.setIcon(QtGui.QIcon(resources_path('ui','arrow-up.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.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("SIG")
|
||||||
self.comboBox_2.addItem('REF')
|
self.comboBox_2.addItem('REF')
|
||||||
self.comboBox.currentIndexChanged.connect(self.initialisation_flux)
|
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.tableWidget_2.itemDoubleClicked.connect(self.suppression_flux)
|
||||||
self.comboBox_2.currentIndexChanged.connect(self.bd_source)
|
self.comboBox_2.currentIndexChanged.connect(self.bd_source)
|
||||||
self.checkBox.hide()
|
self.checkBox.hide()
|
||||||
self.checkBox.stateChanged.connect(self.modeCarte)
|
# self.checkBox.stateChanged.connect(self.modeCarte)
|
||||||
self.toolButton.clicked.connect(self.getCanevas)
|
self.toolButton.clicked.connect(self.getCanevas)
|
||||||
layout = QVBoxLayout()
|
layout = QVBoxLayout()
|
||||||
self.lineEdit.textChanged.connect(self.filtre_dynamique)
|
self.lineEdit.textChanged.connect(self.filtre_dynamique)
|
||||||
self.viewer.textChanged.connect(self.NewTitle)
|
# self.viewer.textChanged.connect(self.NewTitle)
|
||||||
layout.addWidget(self.lineEdit)
|
layout.addWidget(self.lineEdit)
|
||||||
self.viewer.hide()
|
self.viewer.hide()
|
||||||
self.DeBUG.addItem('')
|
self.DeBUG.addItem('')
|
||||||
@ -237,21 +124,18 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.DeBUG.addItem('4269')
|
self.DeBUG.addItem('4269')
|
||||||
|
|
||||||
self.DeBUG.hide()
|
self.DeBUG.hide()
|
||||||
#self.lineEdit.mousePressEvent = self._mousePressEvent
|
|
||||||
|
|
||||||
#metadonnees_plugin = open(self.plugin_path + '/metadata.txt')
|
|
||||||
#infos_metadonnees = metadonnees_plugin.readlines()
|
|
||||||
|
|
||||||
def raise_(self):
|
def raise_(self):
|
||||||
"""Run method that performs all the real work"""
|
"""Run method that performs all the real work"""
|
||||||
self.bd_source()
|
self.bd_source()
|
||||||
|
|
||||||
def ModeDeBUG(self):
|
def ModeDeBUG(self):
|
||||||
self.DeBUG.show()
|
self.DeBUG.show()
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
global DeBUG
|
global DeBUG
|
||||||
if 330 <= event.pos().x() <= 560 and 5 <= event.pos().y() <= 75:
|
if 330 <= event.pos().x() <= 560 and 5 <= event.pos().y() <= 75:
|
||||||
DeBUG = DeBUG+1
|
DeBUG = DeBUG + 1
|
||||||
if DeBUG == 3:
|
if DeBUG == 3:
|
||||||
DeBUG = 0
|
DeBUG = 0
|
||||||
self.ModeDeBUG()
|
self.ModeDeBUG()
|
||||||
@ -259,131 +143,17 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
DeBUG = 0
|
DeBUG = 0
|
||||||
self.DeBUG.hide()
|
self.DeBUG.hide()
|
||||||
|
|
||||||
|
"""
|
||||||
def NewTitle(self):
|
def NewTitle(self):
|
||||||
if self.viewer.title() != '':
|
if self.viewer.title() != '':
|
||||||
Tsplit = ((self.viewer.title()).split('.'))
|
Tsplit = ((self.viewer.title()).split('.'))
|
||||||
print(Tsplit[0],Tsplit[1])
|
print(Tsplit[0], Tsplit[1])
|
||||||
self.openPostGIS(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()
|
|
||||||
|
|
||||||
def bd_source(self):
|
def bd_source(self):
|
||||||
self.activateWindow()
|
self.activateWindow()
|
||||||
bd_origine=self.comboBox_2.currentText()
|
bd_origine = self.comboBox_2.currentText()
|
||||||
if bd_origine == 'REF':
|
if bd_origine == 'REF':
|
||||||
self.run_ref()
|
self.run_ref()
|
||||||
if bd_origine == 'SIG':
|
if bd_origine == 'SIG':
|
||||||
@ -392,17 +162,17 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
def run_ref(self):
|
def run_ref(self):
|
||||||
"""Run method that performs all the real work"""
|
"""Run method that performs all the real work"""
|
||||||
while self.tableWidget_2.rowCount() > 0:
|
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())
|
# print(self.tableWidget_2.rowCount())
|
||||||
global cur,con,dbtype
|
global cur, con, dbtype
|
||||||
dbtype=refdb
|
dbtype = refdb
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbtype+" user=" + user + " password=" + mdp)
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + dbtype + " user=" + user + " password=" + mdp)
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||||
self.initialisation_flux()
|
self.initialisation_flux()
|
||||||
self.combobox_custom()
|
self.combobox_custom()
|
||||||
# Create the dialog with elements (after translation) and keep reference
|
# 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
|
# 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
|
self.first_start = False
|
||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
@ -417,16 +187,16 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
def run_sig(self):
|
def run_sig(self):
|
||||||
"""Run method that performs all the real work"""
|
"""Run method that performs all the real work"""
|
||||||
while self.tableWidget_2.rowCount() > 0:
|
while self.tableWidget_2.rowCount() > 0:
|
||||||
self.tableWidget_2.removeRow(self.tableWidget_2.rowCount()-1)
|
self.tableWidget_2.removeRow(self.tableWidget_2.rowCount() - 1)
|
||||||
global cur,con,dbtype
|
global cur, con, dbtype
|
||||||
dbtype=sigdb
|
dbtype = sigdb
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbtype+" user=" + user + " password=" + mdp)
|
con = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + dbtype + " user=" + user + " password=" + mdp)
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||||
self.initialisation_flux()
|
self.initialisation_flux()
|
||||||
self.combobox_custom()
|
self.combobox_custom()
|
||||||
# Create the dialog with elements (after translation) and keep reference
|
# 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
|
# 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
|
self.first_start = False
|
||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
@ -441,26 +211,23 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
def suppression_flux(self):
|
def suppression_flux(self):
|
||||||
self.tableWidget_2.removeRow(self.tableWidget_2.currentRow())
|
self.tableWidget_2.removeRow(self.tableWidget_2.currentRow())
|
||||||
|
|
||||||
def open_url(self, item):
|
|
||||||
url = item.data(Qt.UserRole)
|
|
||||||
|
|
||||||
def initialisation_flux(self):
|
def initialisation_flux(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
# self.toolButton.setEnabled(1)
|
# self.toolButton.setEnabled(1)
|
||||||
if self.comboBox.currentText() == 'toutes les catégories':
|
if self.comboBox.currentText() == 'toutes les catégories':
|
||||||
custom_list=schemaname_list
|
custom_list = schemaname_list
|
||||||
elif self.comboBox.currentText() == 'travaux':
|
elif self.comboBox.currentText() == 'travaux':
|
||||||
custom_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
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;"""
|
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:
|
else:
|
||||||
custom_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
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;"""
|
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:
|
else:
|
||||||
if self.comboBox.currentText() == 'toutes les catégories':
|
if self.comboBox.currentText() == 'toutes les catégories':
|
||||||
custom_list=schemaname_list_ref
|
custom_list = schemaname_list_ref
|
||||||
else:
|
else:
|
||||||
custom_list="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
custom_list = """SELECT schemaname,tablename from pg_catalog.pg_tables
|
||||||
where schemaname like '"""+ str(self.comboBox.currentText()) +"""' order by schemaname,tablename;"""
|
where schemaname like '""" + str(self.comboBox.currentText()) + """' order by schemaname,tablename;"""
|
||||||
cur.execute(custom_list)
|
cur.execute(custom_list)
|
||||||
list_schema = cur.fetchall()
|
list_schema = cur.fetchall()
|
||||||
|
|
||||||
@ -473,66 +240,66 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
self.tableWidget.setRowCount(len(list_schema))
|
self.tableWidget.setRowCount(len(list_schema))
|
||||||
self.tableWidget.setColumnCount(4)
|
self.tableWidget.setColumnCount(4)
|
||||||
i=0
|
i = 0
|
||||||
for value in list_schema:
|
for value in list_schema:
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
type_val = str(value[0])[1:3]
|
type_val = str(value[0])[1:3]
|
||||||
schema_name=str(value[0])[4:]
|
schema_name = str(value[0])[4:]
|
||||||
table_name=str(value[1][len(value[0])+1:])
|
table_name = str(value[1][len(value[0]) + 1:])
|
||||||
if value[0] == value[1][:len(value[0])]:
|
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:
|
else:
|
||||||
table_name=str(value[1])
|
table_name = str(value[1])
|
||||||
else:
|
else:
|
||||||
type_val = ''
|
type_val = ''
|
||||||
schema_name=str(value[0])
|
schema_name = str(value[0])
|
||||||
table_name=str(value[1])
|
table_name = str(value[1])
|
||||||
if type_val == 'fo':
|
if type_val == 'fo':
|
||||||
type_val=str(value[0])[1:5]
|
type_val = str(value[0])[1:5]
|
||||||
schema_name=str(value[0])[6:]
|
schema_name = str(value[0])[6:]
|
||||||
if value[0] == value[1][:len(value[0])]:
|
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:
|
else:
|
||||||
table_name=str(value[1])
|
table_name = str(value[1])
|
||||||
elif type_val == 'ra':
|
elif type_val == 'ra':
|
||||||
type_val='travaux'
|
type_val = 'travaux'
|
||||||
schema_name=str(value[0])
|
schema_name = str(value[0])
|
||||||
table_name=str(value[1])
|
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':
|
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'
|
type_val = 'agregation'
|
||||||
schema_name=str(value[0])
|
schema_name = str(value[0])
|
||||||
table_name=str(value[1])
|
table_name = str(value[1])
|
||||||
|
|
||||||
if (str(value[0])+'.'+str(value[1])) in RasterList:
|
if (str(value[0]) + '.' + str(value[1])) in RasterList:
|
||||||
SVG='mIconRaster.svg'
|
SVG = 'mIconRaster.svg'
|
||||||
else:
|
else:
|
||||||
SVG='mIconVecteur.svg'
|
SVG = 'mIconVecteur.svg'
|
||||||
|
|
||||||
itemIcon = QTableWidgetItem()
|
itemIcon = QTableWidgetItem()
|
||||||
icon = QIcon()
|
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)
|
itemIcon.setIcon(icon)
|
||||||
|
|
||||||
self.tableWidget.setItem(i,0,itemIcon)
|
self.tableWidget.setItem(i, 0, itemIcon)
|
||||||
item = QTableWidgetItem(type_val)
|
item = QTableWidgetItem(type_val)
|
||||||
self.tableWidget.setItem(i,1,item)
|
self.tableWidget.setItem(i, 1, item)
|
||||||
item = QTableWidgetItem(schema_name)
|
item = QTableWidgetItem(schema_name)
|
||||||
self.tableWidget.setItem(i,2,item)
|
self.tableWidget.setItem(i, 2, item)
|
||||||
item = QTableWidgetItem(table_name)
|
item = QTableWidgetItem(table_name)
|
||||||
self.tableWidget.setItem(i,3,item)
|
self.tableWidget.setItem(i, 3, item)
|
||||||
i=i+1
|
i = i + 1
|
||||||
self.tableWidget.setColumnWidth(0, 20)
|
self.tableWidget.setColumnWidth(0, 20)
|
||||||
self.tableWidget.setColumnWidth(1, 70)
|
self.tableWidget.setColumnWidth(1, 70)
|
||||||
self.tableWidget.setColumnWidth(2, 300)
|
self.tableWidget.setColumnWidth(2, 300)
|
||||||
self.tableWidget.setColumnWidth(3, 300)
|
self.tableWidget.setColumnWidth(3, 300)
|
||||||
self.tableWidget.setHorizontalHeaderLabels(["Type","Code","Schema","Table"])
|
self.tableWidget.setHorizontalHeaderLabels(["Type", "Code", "Schema", "Table"])
|
||||||
|
|
||||||
def selection_flux(self):
|
def selection_flux(self):
|
||||||
selected_row = 0
|
selected_row = 0
|
||||||
selected_items = self.tableWidget.selectedItems()
|
selected_items = self.tableWidget.selectedItems()
|
||||||
|
|
||||||
# Assuming you want to compare items in the first column for uniqueness
|
# 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()
|
new_item_text = selected_items[3].text()
|
||||||
|
|
||||||
if not self.item_already_exists(new_item_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()):
|
for column in range(self.tableWidget.columnCount()):
|
||||||
cloned_item = selected_items[column].clone()
|
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.setColumnCount(4)
|
||||||
self.tableWidget_2.setItem(selected_row, column, cloned_item)
|
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(2, 300)
|
||||||
self.tableWidget_2.setColumnWidth(3, 300)
|
self.tableWidget_2.setColumnWidth(3, 300)
|
||||||
|
|
||||||
|
|
||||||
def item_already_exists(self, new_item_text):
|
def item_already_exists(self, new_item_text):
|
||||||
# Assuming you want to compare items in the first column for uniqueness
|
# 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))
|
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
|
# Check if there are any existing items with the same text in the first column
|
||||||
return len(existing_items) > 0
|
return len(existing_items) > 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def limite_flux(self):
|
def limite_flux(self):
|
||||||
|
|
||||||
if self.tableWidget_2.rowCount() > 5:
|
if self.tableWidget_2.rowCount() > 5:
|
||||||
self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !",
|
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(
|
"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)",
|
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):
|
if self.QMBquestion == QMessageBox.StandardButton(0x00004000):
|
||||||
self.chargement_flux()
|
self.chargement_flux()
|
||||||
|
|
||||||
@ -573,11 +337,13 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
if self.tableWidget_2.rowCount() <= 5:
|
if self.tableWidget_2.rowCount() <= 5:
|
||||||
self.chargement_flux()
|
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.setDataSource(schema, table, "rast")
|
||||||
uri.setKeyColumn('rid')
|
uri.setKeyColumn('rid')
|
||||||
uri.setSrid('2154')
|
uri.setSrid('2154')
|
||||||
@ -589,11 +355,11 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
# Ajout de la couche au canevas QGIS
|
# Ajout de la couche au canevas QGIS
|
||||||
QgsProject.instance().addMapLayer(layer)
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
"""
|
||||||
|
|
||||||
def chargement_flux(self):
|
def chargement_flux(self):
|
||||||
|
|
||||||
managerAU = QgsApplication.authManager()
|
managerAU = QgsApplication.authManager()
|
||||||
k = managerAU.availableAuthMethodConfigs().keys()
|
managerAU.availableAuthMethodConfigs().keys()
|
||||||
|
|
||||||
def REQUEST(type):
|
def REQUEST(type):
|
||||||
switcher = {
|
switcher = {
|
||||||
@ -605,10 +371,8 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
}
|
}
|
||||||
return switcher.get(type, "nothing")
|
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; """
|
SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """
|
||||||
cur.execute(SQLraster)
|
cur.execute(SQLraster)
|
||||||
@ -619,26 +383,27 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
for row in range(0, self.tableWidget_2.rowCount()):
|
for row in range(0, self.tableWidget_2.rowCount()):
|
||||||
color_rgba = 855030089
|
color_rgba = 855030089
|
||||||
if self.tableWidget_2.item(row, 1).background().color().rgba() != 855030089:
|
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
|
# supression de la partie de l'url après le point d'interrogation
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
code = self.tableWidget_2.item(row,1).text()
|
code = self.tableWidget_2.item(row, 1).text()
|
||||||
schema = '_'+code+'_'+self.tableWidget_2.item(row,2).text()
|
schema = '_' + code + '_' + self.tableWidget_2.item(row, 2).text()
|
||||||
if code == 'travaux' or code == 'agregation' :
|
if code == 'travaux' or code == 'agregation':
|
||||||
schema = self.tableWidget_2.item(row,2).text()
|
schema = self.tableWidget_2.item(row, 2).text()
|
||||||
table = self.tableWidget_2.item(row,3).text()
|
table = self.tableWidget_2.item(row, 3).text()
|
||||||
else:
|
else:
|
||||||
table = self.tableWidget_2.item(row,3).text()
|
table = self.tableWidget_2.item(row, 3).text()
|
||||||
table = schema+'_'+table
|
table = schema + '_' + table
|
||||||
elif dbtype == refdb:
|
elif dbtype == refdb:
|
||||||
# code = self.tableWidget_2.item(row,1).text()
|
# code = self.tableWidget_2.item(row,1).text()
|
||||||
schema = self.tableWidget_2.item(row,2).text()
|
schema = self.tableWidget_2.item(row, 2).text()
|
||||||
table = self.tableWidget_2.item(row,3).text()#.split("?", 1)[0]
|
table = self.tableWidget_2.item(row, 3).text()
|
||||||
|
# .split("?", 1)[0]
|
||||||
uri = QgsDataSourceUri()
|
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
|
# 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.setDataSource(schema, table, "rast")
|
||||||
uri.setKeyColumn('rid')
|
uri.setKeyColumn('rid')
|
||||||
uri.setSrid('2154')
|
uri.setSrid('2154')
|
||||||
@ -649,7 +414,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
uri.setKeyColumn('gid')
|
uri.setKeyColumn('gid')
|
||||||
|
|
||||||
# Chargement de la couche PostGIS
|
# 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)
|
cur.execute(geom_type)
|
||||||
list_typegeom = cur.fetchall()
|
list_typegeom = cur.fetchall()
|
||||||
if len(list_typegeom) > 1:
|
if len(list_typegeom) > 1:
|
||||||
@ -666,7 +431,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
uri.setWkbType(QgsWkbTypes.LineString)
|
uri.setWkbType(QgsWkbTypes.LineString)
|
||||||
elif typegeom[0] == 'MultiPoint':
|
elif typegeom[0] == 'MultiPoint':
|
||||||
uri.setWkbType(QgsWkbTypes.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')
|
uri.setSrid('2154')
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
# Ajout de la couche au canevas QGIS
|
# Ajout de la couche au canevas QGIS
|
||||||
@ -676,7 +441,8 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
# Ajout de la couche au canevas QGIS
|
# Ajout de la couche au canevas QGIS
|
||||||
QgsProject.instance().addMapLayer(layer)
|
QgsProject.instance().addMapLayer(layer)
|
||||||
else:
|
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):
|
def combobox_custom(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
self.toolButton.setEnabled(1)
|
self.toolButton.setEnabled(1)
|
||||||
@ -693,7 +459,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
self.comboBox.addItem('form')
|
self.comboBox.addItem('form')
|
||||||
if dbtype == refdb:
|
if dbtype == refdb:
|
||||||
self.toolButton.setEnabled(0)
|
self.toolButton.setEnabled(0)
|
||||||
custom_list=schemaname_distinct
|
custom_list = schemaname_distinct
|
||||||
cur.execute(custom_list)
|
cur.execute(custom_list)
|
||||||
list_schema = cur.fetchall()
|
list_schema = cur.fetchall()
|
||||||
self.comboBox.clear()
|
self.comboBox.clear()
|
||||||
@ -703,7 +469,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
def filtre_dynamique(self, filter_text):
|
def filtre_dynamique(self, filter_text):
|
||||||
if filter_text.find(' ') >= 0:
|
if filter_text.find(' ') >= 0:
|
||||||
filter_text=filter_text.replace(" ","_")
|
filter_text = filter_text.replace(" ", "_")
|
||||||
for i in range(self.tableWidget.rowCount()):
|
for i in range(self.tableWidget.rowCount()):
|
||||||
for j in range(self.tableWidget.columnCount()):
|
for j in range(self.tableWidget.columnCount()):
|
||||||
item = self.tableWidget.item(i, j)
|
item = self.tableWidget.item(i, j)
|
||||||
@ -714,14 +480,14 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
|
|
||||||
def getCanevas(self):
|
def getCanevas(self):
|
||||||
poly = iface.mapCanvas().extent()
|
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_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_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_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_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_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_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)
|
cur.execute(SQL_GEOM_CONTOUR)
|
||||||
TableContour = cur.fetchall()
|
TableContour = cur.fetchall()
|
||||||
@ -736,11 +502,11 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY)
|
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY)
|
||||||
TableTravauxPoly = cur.fetchall()
|
TableTravauxPoly = cur.fetchall()
|
||||||
|
|
||||||
TableHaveGeom = sorted(TableContour+TableHabitat+TableEuHabitat+TableTravauxLigne+TableTravauxPoint+TableTravauxPoly)
|
TableHaveGeom = sorted(TableContour + TableHabitat + TableEuHabitat + TableTravauxLigne + TableTravauxPoint + TableTravauxPoly)
|
||||||
row_count = 0
|
row_count = 0
|
||||||
self.tableWidget.setRowCount(0)
|
self.tableWidget.setRowCount(0)
|
||||||
for e in TableHaveGeom:
|
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]
|
TableSomme = cur.fetchall()[0][0]
|
||||||
|
|
||||||
if e[0][1:3] != 'fo':
|
if e[0][1:3] != 'fo':
|
||||||
@ -749,35 +515,34 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
|||||||
else:
|
else:
|
||||||
DepName = QTableWidgetItem('form')
|
DepName = QTableWidgetItem('form')
|
||||||
SchemaName = QTableWidgetItem(e[0][6:])
|
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)
|
self.tableWidget.insertRow(row_count)
|
||||||
|
|
||||||
itemIcon = QTableWidgetItem()
|
itemIcon = QTableWidgetItem()
|
||||||
icon = QIcon()
|
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)
|
itemIcon.setIcon(icon)
|
||||||
|
|
||||||
self.tableWidget.setItem(row_count,0,itemIcon)
|
self.tableWidget.setItem(row_count, 0, itemIcon)
|
||||||
self.tableWidget.setItem(row_count,1,DepName)
|
self.tableWidget.setItem(row_count, 1, DepName)
|
||||||
self.tableWidget.setItem(row_count,2,SchemaName)
|
self.tableWidget.setItem(row_count, 2, SchemaName)
|
||||||
self.tableWidget.setItem(row_count,3,TableName)
|
self.tableWidget.setItem(row_count, 3, TableName)
|
||||||
if TableSomme == 0:
|
if TableSomme == 0:
|
||||||
for j in range(self.tableWidget.columnCount()):
|
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).setBackground(QtGui.QColor(246, 185, 73, 50))
|
||||||
self.tableWidget.item(row_count,j).setToolTip('Couche dans une autre BD !')
|
self.tableWidget.item(row_count, j).setToolTip('Couche dans une autre BD !')
|
||||||
row_count = row_count+1
|
row_count = row_count + 1
|
||||||
if self.lineEdit.text() != 'Recherche par mots-clés':
|
if self.lineEdit.text() != 'Recherche par mots-clés':
|
||||||
self.filtre_dynamique(self.lineEdit.text())
|
self.filtre_dynamique(self.lineEdit.text())
|
||||||
|
|
||||||
def SwitchGeom(self,vargeom):
|
def SwitchGeom(self, vargeom):
|
||||||
new_object = '['
|
new_object = '['
|
||||||
obj = vargeom['coordinates'][0][0]
|
obj = vargeom['coordinates'][0][0]
|
||||||
for obj_X in obj:
|
for obj_X in obj:
|
||||||
new_object = new_object+'['+str(obj_X[1])+','+str(obj_X[0])+'],'
|
new_object = new_object + '[' + str(obj_X[1]) + ',' + str(obj_X[0]) + '],'
|
||||||
new_object = new_object[:-1]+']'
|
new_object = new_object[:-1] + ']'
|
||||||
return(new_object)
|
return (new_object)
|
||||||
|
|
||||||
def popup(self):
|
# def popup(self):
|
||||||
|
# self.dialog = Popup() # +++ - self
|
||||||
self.dialog = Popup() # +++ - self
|
# self.dialog.text_edit.show()
|
||||||
self.dialog.text_edit.show()
|
|
||||||
|
|||||||
@ -1,9 +1,4 @@
|
|||||||
import os
|
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.gui import *
|
||||||
|
|
||||||
from qgis.core import (
|
from qgis.core import (
|
||||||
@ -34,21 +29,25 @@ from qgis.utils import iface
|
|||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
# resources_path,
|
||||||
send_issues,
|
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')
|
EDITOR_CLASS = load_ui('CenRa_IssuesSend.ui')
|
||||||
|
|
||||||
class CenRa_Issues(QDialog, EDITOR_CLASS):
|
|
||||||
|
|
||||||
|
class CenRa_Issues(QDialog, EDITOR_CLASS):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
_ = parent
|
_ = parent
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.settings = QgsSettings()
|
self.settings = QgsSettings()
|
||||||
|
|
||||||
#place connect here
|
# place connect here
|
||||||
self.annuler_button.clicked.connect(self.close)
|
self.annuler_button.clicked.connect(self.close)
|
||||||
self.ok_button.clicked.connect(self.run_sendissues)
|
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_autre = self.check_autre.isChecked()
|
||||||
|
|
||||||
statu = []
|
statu = []
|
||||||
if statu_bug == True : statu = statu + [1]
|
if statu_bug is True:
|
||||||
if statu_aide == True : statu = statu + [3]
|
statu = statu + [1]
|
||||||
if statu_question == True : statu = statu + [5]
|
if statu_aide is True:
|
||||||
if statu_amelioration == True : statu = statu + [2]
|
statu = statu + [3]
|
||||||
if statu_autre == True : statu = statu + [6]
|
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:
|
if len(statu) >= 1:
|
||||||
import qgis
|
import qgis
|
||||||
url = qgis.utils.pluginMetadata(NAME,'tracker')
|
url = qgis.utils.pluginMetadata(NAME, 'tracker')
|
||||||
print(text_message)
|
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
|
code = send_info.status_code
|
||||||
print(code)
|
print(code)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
from qgis.core import QgsApplication
|
from qgis.core import QgsApplication
|
||||||
|
|
||||||
|
|
||||||
def gitea():
|
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'
|
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'
|
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
|
# Write the file out again
|
||||||
with open(file_url, 'w') as file:
|
with open(file_url, 'w') as file:
|
||||||
file.write(filedata)
|
file.write(filedata)
|
||||||
|
|||||||
@ -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'
|
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;"""
|
order by schemaname;"""
|
||||||
schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
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'
|
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;"""
|
order by schemaname,tablename;"""
|
||||||
schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
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)
|
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
|
UNION
|
||||||
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
||||||
geom = "geom"
|
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_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_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_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))"""
|
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_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 = """(
|
champ_vegethab_point = """(
|
||||||
@ -148,4 +148,4 @@ champ_vegethab_multipolygon = """(
|
|||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(MultiPolygon,2154)
|
geom geometry(MultiPolygon,2154)
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
|
|||||||
@ -77,15 +77,17 @@ def plugin_test_data_path(*args, copy=False):
|
|||||||
else:
|
else:
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
|
||||||
def pyperclip():
|
def pyperclip():
|
||||||
dst = dirname(dirname(__file__))+"\\tools\\"
|
dst = dirname(dirname(__file__)) + "\\tools\\"
|
||||||
if os.access('N:/',os.R_OK):
|
if os.access('N:/', os.R_OK):
|
||||||
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py'
|
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py'
|
||||||
try:
|
try:
|
||||||
shutil.copy(src, dst)
|
shutil.copy(src, dst)
|
||||||
except:
|
except NameError:
|
||||||
print('404')
|
print('404')
|
||||||
|
|
||||||
|
|
||||||
def resources_path(*args):
|
def resources_path(*args):
|
||||||
"""Get the path to our resources folder.
|
"""Get the path to our resources folder.
|
||||||
|
|
||||||
@ -112,62 +114,65 @@ def load_ui(*args):
|
|||||||
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
|
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
|
||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
def send_issues(url,titre,body,labels):
|
|
||||||
|
|
||||||
|
def send_issues(url, titre, body, labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
import os
|
# import os
|
||||||
import qgis
|
# import qgis
|
||||||
|
|
||||||
usr = os.environ['USERNAME']
|
# usr = os.environ['USERNAME']
|
||||||
token = '9d0a4e0bea561710e0728f161f7edf4e5201e112'
|
token = '9d0a4e0bea561710e0728f161f7edf4e5201e112'
|
||||||
url=url+'?token='+token
|
url = url + '?token=' + token
|
||||||
|
|
||||||
headers = {'Authorization': 'token ' + token,'accept': 'application/json','Content-Type': 'application/json'}
|
|
||||||
|
|
||||||
|
headers = {'Authorization': 'token ' + token, 'accept': 'application/json', 'Content-Type': 'application/json'}
|
||||||
|
|
||||||
payload = {'title': titre, 'body': body, 'labels': labels}
|
payload = {'title': titre, 'body': body, 'labels': labels}
|
||||||
try:
|
try:
|
||||||
urllib.request.urlopen('https://google.com')
|
urllib.request.urlopen('https://google.com')
|
||||||
binar = True
|
binar = True
|
||||||
except:
|
except NameError:
|
||||||
binar = False
|
binar = False
|
||||||
r = ''
|
r = ''
|
||||||
if binar:
|
if binar:
|
||||||
r = requests.post(url, data=json.dumps(payload), headers=headers)
|
r = requests.post(url, data=json.dumps(payload), headers=headers)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
|
||||||
def maj_verif(NAME):
|
def maj_verif(NAME):
|
||||||
import qgis
|
import qgis
|
||||||
import urllib.request
|
import urllib.request
|
||||||
iface = qgis.utils.iface
|
iface = qgis.utils.iface
|
||||||
from qgis.core import Qgis
|
from qgis.core import Qgis
|
||||||
|
|
||||||
url = qgis.utils.pluginMetadata(NAME,'repository')
|
# url = qgis.utils.pluginMetadata(NAME, 'repository')
|
||||||
#URL = url+'/raw/branch/main/plugins.xml'
|
# URL = url+'/raw/branch/main/plugins.xml'
|
||||||
URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml'
|
URL = 'https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/plugins.xml'
|
||||||
# print(URL)
|
# print(URL)
|
||||||
version = qgis.utils.pluginMetadata(NAME,'version')
|
version = qgis.utils.pluginMetadata(NAME, 'version')
|
||||||
len_version = len(version)
|
len_version = len(version)
|
||||||
try:
|
try:
|
||||||
urllib.request.urlopen('https://google.com')
|
urllib.request.urlopen('https://google.com')
|
||||||
binar = True
|
binar = True
|
||||||
except:
|
except NameError:
|
||||||
binar = False
|
binar = False
|
||||||
if binar:
|
if binar:
|
||||||
try:
|
try:
|
||||||
version_web = str(urllib.request.urlopen(URL).read())
|
version_web = str(urllib.request.urlopen(URL).read())
|
||||||
plugin_num = version_web.find(NAME)
|
plugin_num = version_web.find(NAME)
|
||||||
valeur_version_web = version_web.find('<version>',plugin_num)+9
|
valeur_version_web = version_web.find('<version>', plugin_num) + 9
|
||||||
version_plugin = version_web[valeur_version_web:valeur_version_web+len_version]
|
version_plugin = version_web[valeur_version_web: valeur_version_web + len_version]
|
||||||
if version_plugin != version:
|
if version_plugin != version:
|
||||||
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
iface.messageBar().pushMessage("MAJ :", "Des mise à jour de plugin sont disponibles.", level=Qgis.Info, duration=30)
|
||||||
except:
|
except NameError:
|
||||||
print("error gitea version ssl")
|
print("error gitea version ssl")
|
||||||
else:
|
else:
|
||||||
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
iface.messageBar().pushMessage("WiFi :", "Pas de connection à internet.", level=Qgis.Warning, duration=30)
|
||||||
|
|
||||||
|
|
||||||
def devlog(NAME):
|
def devlog(NAME):
|
||||||
import qgis
|
import qgis
|
||||||
devmaj = '<head><style>* {margin:0; padding:0; }</style></head>'
|
devmaj = '<head><style>* {margin:0; padding:0; }</style></head>'
|
||||||
devmaj = devmaj+qgis.utils.pluginMetadata(NAME,'changelog')
|
devmaj = devmaj + qgis.utils.pluginMetadata(NAME, 'changelog')
|
||||||
return devmaj
|
return devmaj
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user