Compare commits
39
Commits
a7d7ea83f4
...
1.10
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3719456f04 | ||
|
|
bea31c870b | ||
|
|
2d04e34ed2 | ||
|
|
ac070f866e | ||
|
|
4851339008 | ||
|
|
f2d11a64e4 | ||
|
|
4c52c85efb | ||
|
|
3ef37aa696 | ||
|
|
3b0758ea5c | ||
|
|
852301a537 | ||
|
|
b3451773be | ||
|
|
72a4a8a7b7 | ||
|
|
c809c12c9f | ||
|
|
bc538524fb | ||
|
|
23f21a4c39 | ||
|
|
2b00cf9106 | ||
|
|
ad49b80b5a | ||
|
|
dbe918cfcf | ||
|
|
f692414698 | ||
|
|
75ec1c0191 | ||
|
|
ca79b96958 | ||
|
|
ce85b09e11 | ||
|
|
8e84d39165 | ||
|
|
72e91a527a | ||
|
|
b3eeb2d60c | ||
|
|
ea6fb7c870 | ||
|
|
1aee5d90d7 | ||
|
|
901d1b9441 | ||
|
|
cd4d320614 | ||
|
|
c7ff62c717 | ||
|
|
49b78e58ac | ||
|
|
1a17bb7d7c | ||
|
|
e2e062ed12 | ||
|
|
a90a45a0b9 | ||
|
|
80a563357d | ||
|
|
be3a082f93 | ||
|
|
cbe6952c9a | ||
|
|
bbb41400e5 | ||
|
|
d92744fe6b |
+3
-1
@@ -16,4 +16,6 @@
|
|||||||
|
|
||||||
#ReIgnore
|
#ReIgnore
|
||||||
**/__pycache__
|
**/__pycache__
|
||||||
**/test/
|
**/test/
|
||||||
|
PythonSQL.py
|
||||||
|
StyleLayer.py
|
||||||
@@ -27,17 +27,24 @@ import os
|
|||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
resources_path,
|
resources_path,
|
||||||
|
pyperclip,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
|
pyperclip()
|
||||||
|
|
||||||
from .canvas_editor import AutoMap_Editor
|
from .canvas_editor import AutoMap_Editor
|
||||||
|
from .style_invoke import AutoMap_Style
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
|
||||||
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
|
|
||||||
class PgAutoMap:
|
class PgAutoMap:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
""" Constructor. """
|
""" Constructor. """
|
||||||
self.canvas_editor = None
|
self.canvas_editor = None
|
||||||
|
self.style_dock = None
|
||||||
# self.issues = None
|
# self.issues = None
|
||||||
self.provider = None
|
self.provider = None
|
||||||
self.locator_filter = None
|
self.locator_filter = None
|
||||||
@@ -73,10 +80,16 @@ class PgAutoMap:
|
|||||||
if not self.canvas_editor:
|
if not self.canvas_editor:
|
||||||
self.canvas_editor = AutoMap_Editor()
|
self.canvas_editor = AutoMap_Editor()
|
||||||
|
|
||||||
|
|
||||||
self.automap_action = QAction(icon, 'CenRa_AutoMap',None)
|
self.automap_action = QAction(icon, 'CenRa_AutoMap',None)
|
||||||
self.toolBar.addAction(self.automap_action)
|
self.toolBar.addAction(self.automap_action)
|
||||||
self.automap_action.triggered.connect(self.open_editor)
|
self.automap_action.triggered.connect(self.open_editor)
|
||||||
|
|
||||||
|
if not self.style_dock:
|
||||||
|
self.style_dock = AutoMap_Style()
|
||||||
|
|
||||||
|
if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
|
||||||
|
iface.addDockWidget(Qt.DockWidgetArea(0x1), self.style_dock)
|
||||||
|
|
||||||
'''
|
'''
|
||||||
if not self.locator_filter:
|
if not self.locator_filter:
|
||||||
self.locator_filter = LocatorFilter(iface)
|
self.locator_filter = LocatorFilter(iface)
|
||||||
@@ -115,7 +128,7 @@ class PgAutoMap:
|
|||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
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/'))
|
||||||
|
|||||||
+105
-26
@@ -1,6 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from PyQt5.QtCore import QSettings
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import partial
|
from functools import partial
|
||||||
@@ -44,10 +44,12 @@ from qgis.core import (
|
|||||||
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
#from qgis.PyQt.QtWebKitWidgets import QWebPage
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
|
QMessageBox,
|
||||||
|
QPushButton,
|
||||||
QDockWidget,
|
QDockWidget,
|
||||||
QFileDialog,
|
QFileDialog,
|
||||||
QInputDialog,
|
QInputDialog,
|
||||||
@@ -57,14 +59,18 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from PyQt5 import QtGui
|
|
||||||
|
from qgis.PyQt.QtCore import QSettings
|
||||||
|
from qgis.PyQt import QtGui
|
||||||
|
from qgis.PyQt import QtWidgets
|
||||||
|
|
||||||
|
|
||||||
from qgis.PyQt.QtXml import QDomDocument
|
from qgis.PyQt.QtXml import QDomDocument
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import glob
|
import glob
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
@@ -119,8 +125,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
for i in plugin_dir[1:]:
|
for i in plugin_dir[1:]:
|
||||||
ix = ix+1
|
ix = ix+1
|
||||||
path = path+'/'+i
|
path = path+'/'+i
|
||||||
self.tabWidget.setStyleSheet('background-image: url('+path+'/tools/bg/Capture.png);')
|
#self.tabWidget.setStyleSheet('background-image: url('+path+'/tools/bg/Capture.png);')
|
||||||
|
|
||||||
|
self.verticalScrollBar.hide()
|
||||||
self.commandLinkButton.clicked.connect(self.chargement_qpt)
|
self.commandLinkButton.clicked.connect(self.chargement_qpt)
|
||||||
self.radioButton_9.clicked.connect(self.statu_atlas)
|
self.radioButton_9.clicked.connect(self.statu_atlas)
|
||||||
self.radioButton_10.clicked.connect(self.statu_source)
|
self.radioButton_10.clicked.connect(self.statu_source)
|
||||||
@@ -131,6 +138,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.commandLinkButton_2.clicked.connect(self.load_ortho)
|
self.commandLinkButton_2.clicked.connect(self.load_ortho)
|
||||||
self.commandLinkButton_3.clicked.connect(self.load_osm)
|
self.commandLinkButton_3.clicked.connect(self.load_osm)
|
||||||
self.CustomeLogo.clicked.connect(self.deflogoteck)
|
self.CustomeLogo.clicked.connect(self.deflogoteck)
|
||||||
|
self.verticalScrollBar.valueChanged.connect(self.moveFrame)
|
||||||
|
|
||||||
## On ajoute le nom des templates à la liste déroulante de l'onglet "mises en page" :
|
## On ajoute le nom des templates à la liste déroulante de l'onglet "mises en page" :
|
||||||
mises_en_page = []
|
mises_en_page = []
|
||||||
@@ -190,6 +198,14 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.hide_source()
|
self.hide_source()
|
||||||
self.hide_atlas()
|
self.hide_atlas()
|
||||||
|
|
||||||
|
def wheelEvent(self,event):
|
||||||
|
if (event.angleDelta().y() >= 1):
|
||||||
|
vsb = self.verticalScrollBar.value()+20
|
||||||
|
else:
|
||||||
|
vsb = self.verticalScrollBar.value()-20
|
||||||
|
self.verticalScrollBar.setValue(vsb)
|
||||||
|
def moveFrame(self):
|
||||||
|
self.frame.move(self.frame.x(),self.verticalScrollBar.value())
|
||||||
def update_logo_library(self):
|
def update_logo_library(self):
|
||||||
self.mComboBox_4.clear()
|
self.mComboBox_4.clear()
|
||||||
logo_library = []
|
logo_library = []
|
||||||
@@ -321,6 +337,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.comboBox_6.clear()
|
self.comboBox_6.clear()
|
||||||
self.comboBox_7.clear()
|
self.comboBox_7.clear()
|
||||||
|
|
||||||
|
if (self.s.value("automap/prenom_nom", "1", type=str) != "1"):
|
||||||
|
self.lineEdit_5.setText(self.s.value("automap/prenom_nom", 1, type=str))
|
||||||
couches = []
|
couches = []
|
||||||
couche_vecteur = ['']
|
couche_vecteur = ['']
|
||||||
mapThemes = ['']
|
mapThemes = ['']
|
||||||
@@ -434,7 +452,18 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
doc = QDomDocument()
|
doc = QDomDocument()
|
||||||
doc.setContent(template_content)
|
doc.setContent(template_content)
|
||||||
self.layout.loadFromTemplate(doc, QgsReadWriteContext(), True)
|
self.layout.loadFromTemplate(doc, QgsReadWriteContext(), True)
|
||||||
self.layout.setName(layout_name)
|
|
||||||
|
try:
|
||||||
|
cutLayout = layout_name.index("¶")
|
||||||
|
except:
|
||||||
|
cutLayout = 0
|
||||||
|
|
||||||
|
if cutLayout >= 1:
|
||||||
|
self.layout.setName(layout_name)
|
||||||
|
titre_layout_name=layout_name[:cutLayout]
|
||||||
|
else:
|
||||||
|
self.layout.setName(layout_name)
|
||||||
|
titre_layout_name = layout_name
|
||||||
|
|
||||||
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
if self.radioButton_6.isChecked() and self.radioButton_7.isChecked():
|
||||||
logo_div = A4_size['Portrait']['RIGHT']
|
logo_div = A4_size['Portrait']['RIGHT']
|
||||||
@@ -499,9 +528,9 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
## Ajout d'un titre à la mise en page
|
## Ajout d'un titre à la mise en page
|
||||||
title = QgsLayoutItemLabel(self.layout)
|
title = QgsLayoutItemLabel(self.layout)
|
||||||
self.layout.addLayoutItem(title)
|
self.layout.addLayoutItem(title)
|
||||||
titre = layout_name
|
titre = titre_layout_name
|
||||||
title.setText(titre)
|
title.setText(titre)
|
||||||
title.setFont(QFont("Calibri", 15, QFont.Bold))
|
title.setFont(QFont("Calibri", 15, False))
|
||||||
title.setItemRotation(self.template_parameters['Titre_rotate'])
|
title.setItemRotation(self.template_parameters['Titre_rotate'])
|
||||||
title.attemptResize(self.template_parameters['Titre_size'])
|
title.attemptResize(self.template_parameters['Titre_size'])
|
||||||
title.attemptMove(self.template_parameters['Titre_locals'])
|
title.attemptMove(self.template_parameters['Titre_locals'])
|
||||||
@@ -510,8 +539,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
title.setBackgroundColor(QColor(255, 255, 255, 130))
|
title.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
self.layout.addItem(title)
|
self.layout.addItem(title)
|
||||||
# title.adjustSizeToText() on n'utilise plutot setFixedSize pour pouvoir centrer le titre de manière plus optimale ici
|
# title.adjustSizeToText() on n'utilise plutot setFixedSize pour pouvoir centrer le titre de manière plus optimale ici
|
||||||
title.setHAlign(Qt.AlignHCenter)
|
title.setHAlign(Qt.AlignmentFlag(0x0004))
|
||||||
title.setVAlign(Qt.AlignVCenter)
|
title.setVAlign(Qt.AlignmentFlag(0x0080))
|
||||||
|
|
||||||
|
|
||||||
## Ajout d'un sous titre à la mise en page
|
## Ajout d'un sous titre à la mise en page
|
||||||
@@ -521,7 +550,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
if self.radioButton_9.isChecked() == 1:
|
if self.radioButton_9.isChecked() == 1:
|
||||||
titre = titre + ' [%' + self.comboBox_4.currentText() + '%]'
|
titre = titre + ' [%' + self.comboBox_4.currentText() + '%]'
|
||||||
subtitle.setText(titre)
|
subtitle.setText(titre)
|
||||||
subtitle.setFont(QFont("MS Shell Dlg 2", 10))
|
subtitle.setFont(QFont("Calibri", 10))
|
||||||
subtitle.setItemRotation(self.template_parameters['Sous_titre_rotate'])
|
subtitle.setItemRotation(self.template_parameters['Sous_titre_rotate'])
|
||||||
subtitle.attemptResize(self.template_parameters['Sous_titre_size'])
|
subtitle.attemptResize(self.template_parameters['Sous_titre_size'])
|
||||||
subtitle.attemptMove(self.template_parameters['Sous_titre_locals'])
|
subtitle.attemptMove(self.template_parameters['Sous_titre_locals'])
|
||||||
@@ -529,8 +558,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
subtitle.setBackgroundEnabled(True)
|
subtitle.setBackgroundEnabled(True)
|
||||||
subtitle.setBackgroundColor(QColor(255, 255, 255, 130))
|
subtitle.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
self.layout.addItem(subtitle)
|
self.layout.addItem(subtitle)
|
||||||
subtitle.setHAlign(Qt.AlignHCenter)
|
subtitle.setHAlign(Qt.AlignmentFlag(0x0004))
|
||||||
subtitle.setVAlign(Qt.AlignVCenter)
|
subtitle.setVAlign(Qt.AlignmentFlag(0x0080))
|
||||||
|
|
||||||
|
|
||||||
## Ajout du logo CEN NA en haut à gauche de la page
|
## Ajout du logo CEN NA en haut à gauche de la page
|
||||||
@@ -628,6 +657,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.scalebarnumeric_qpt.setNumberOfSegments(2)
|
self.scalebarnumeric_qpt.setNumberOfSegments(2)
|
||||||
self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0)
|
self.scalebarnumeric_qpt.setNumberOfSegmentsLeft(0)
|
||||||
|
|
||||||
|
self.scalebarnumeric_qpt.setFont(QFont("Calibri", 12))
|
||||||
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals'])
|
self.scalebarnumeric_qpt.attemptMove(self.template_parameters['Echelle_locals'])
|
||||||
self.scalebarnumeric_qpt.attemptResize(self.template_parameters['Echelle_size'])
|
self.scalebarnumeric_qpt.attemptResize(self.template_parameters['Echelle_size'])
|
||||||
self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate'])
|
self.scalebarnumeric_qpt.setItemRotation(self.template_parameters['Echelle_rotate'])
|
||||||
@@ -647,6 +677,7 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.scalebar_qpt.setNumberOfSegments(2)
|
self.scalebar_qpt.setNumberOfSegments(2)
|
||||||
self.scalebar_qpt.setNumberOfSegmentsLeft(0)
|
self.scalebar_qpt.setNumberOfSegmentsLeft(0)
|
||||||
|
|
||||||
|
self.scalebar_qpt.setFont(QFont("Calibri", 12))
|
||||||
self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals'])
|
self.scalebar_qpt.attemptMove(self.template_parameters['Echelle_2_locals'])
|
||||||
self.scalebar_qpt.attemptResize(self.template_parameters['Echelle_2_size'])
|
self.scalebar_qpt.attemptResize(self.template_parameters['Echelle_2_size'])
|
||||||
self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate'])
|
self.scalebar_qpt.setItemRotation(self.template_parameters['Echelle_2_rotate'])
|
||||||
@@ -664,6 +695,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
north.attemptMove(self.template_parameters['Arrow_locals'])
|
north.attemptMove(self.template_parameters['Arrow_locals'])
|
||||||
north.attemptResize(self.template_parameters['Arrow_size'])
|
north.attemptResize(self.template_parameters['Arrow_size'])
|
||||||
north.setItemRotation(self.template_parameters['Arrow_rotate'])
|
north.setItemRotation(self.template_parameters['Arrow_rotate'])
|
||||||
|
north.setBackgroundEnabled(True)
|
||||||
|
north.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
|
|
||||||
if self.radioButton_10.isChecked() == 1:
|
if self.radioButton_10.isChecked() == 1:
|
||||||
text_source = ' '
|
text_source = ' '
|
||||||
@@ -674,24 +707,32 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
else:
|
else:
|
||||||
info_text = ["Source : " + self.lineEdit_4.text()][0]
|
info_text = ["Source : " + self.lineEdit_4.text()][0]
|
||||||
# ajout note info:
|
# ajout note info:
|
||||||
info = ["Réalisation : " + "CEN Rhône-Alpes (" + date.today().strftime(
|
if self.radioButton_14.isChecked() == 1:
|
||||||
"%d/%m/%Y") + ")"]
|
self.s.setValue("automap/prenom_nom",self.lineEdit_5.text())
|
||||||
|
prenom_nom = self.s.value("automap/prenom_nom", 1, type=str)
|
||||||
|
info = ["Réalisation : " + "CEN Rhône-Alpes (" + date.today().strftime("%d/%m/%Y") + ") par "+prenom_nom]
|
||||||
|
else:
|
||||||
|
info = ["Réalisation : " + "CEN Rhône-Alpes (" + date.today().strftime("%d/%m/%Y") + ")"]
|
||||||
credit_text = QgsLayoutItemLabel(self.layout)
|
credit_text = QgsLayoutItemLabel(self.layout)
|
||||||
credit_text.setText(info[0])
|
credit_text.setText(info[0])
|
||||||
credit_text.setFont(QFont("Calibri", 9))
|
credit_text.setFont(QFont("Calibri", 9))
|
||||||
credit_text.setHAlign(Qt.AlignRight)
|
credit_text.setHAlign(Qt.AlignmentFlag(0x0002))
|
||||||
credit_text.setVAlign(Qt.AlignVCenter)
|
credit_text.setVAlign(Qt.AlignmentFlag(0x0080))
|
||||||
|
credit_text.setBackgroundEnabled(True)
|
||||||
|
credit_text.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
credit_text2 = QgsLayoutItemLabel(self.layout)
|
credit_text2 = QgsLayoutItemLabel(self.layout)
|
||||||
credit_text2.setText(info_text)
|
credit_text2.setText(info_text)
|
||||||
credit_text2.setFont(QFont("Calibri", 9))
|
credit_text2.setFont(QFont("Calibri", 9))
|
||||||
credit_text2.setHAlign(Qt.AlignRight)
|
credit_text2.setHAlign(Qt.AlignmentFlag(0x0002))
|
||||||
credit_text2.setVAlign(Qt.AlignVCenter)
|
credit_text2.setVAlign(Qt.AlignmentFlag(0x0080))
|
||||||
credit_text.setItemRotation(self.template_parameters['Credit_rotate'])
|
credit_text.setItemRotation(self.template_parameters['Credit_rotate'])
|
||||||
credit_text.attemptResize(self.template_parameters['Credit_size'])
|
credit_text.attemptResize(self.template_parameters['Credit_size'])
|
||||||
credit_text.attemptMove(self.template_parameters['Credit_locals'])
|
credit_text.attemptMove(self.template_parameters['Credit_locals'])
|
||||||
credit_text2.setItemRotation(self.template_parameters['Source_rotate'])
|
credit_text2.setItemRotation(self.template_parameters['Source_rotate'])
|
||||||
credit_text2.attemptResize(self.template_parameters['Source_size'])
|
credit_text2.attemptResize(self.template_parameters['Source_size'])
|
||||||
credit_text2.attemptMove(self.template_parameters['Source_locals'])
|
credit_text2.attemptMove(self.template_parameters['Source_locals'])
|
||||||
|
credit_text2.setBackgroundEnabled(True)
|
||||||
|
credit_text2.setBackgroundColor(QColor(255, 255, 255, 130))
|
||||||
self.layout.addLayoutItem(credit_text)
|
self.layout.addLayoutItem(credit_text)
|
||||||
self.layout.addLayoutItem(credit_text2)
|
self.layout.addLayoutItem(credit_text2)
|
||||||
|
|
||||||
@@ -703,7 +744,8 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
logo_credit.setMode(QgsLayoutItemPicture.FormatRaster)
|
logo_credit.setMode(QgsLayoutItemPicture.FormatRaster)
|
||||||
cur_x = self.template_parameters['Logo_2_locals'].x()
|
cur_x = self.template_parameters['Logo_2_locals'].x()
|
||||||
logo_credit.attemptMove(self.template_parameters['Logo_2_locals'])
|
logo_credit.attemptMove(self.template_parameters['Logo_2_locals'])
|
||||||
logo_credit.setPictureAnchor(4)
|
print(logo_credit.pictureAnchor())
|
||||||
|
#logo_credit.setPictureAnchor(4)
|
||||||
self.template_parameters['Logo_2_locals'].setX(cur_x+(logo_div/len_item))
|
self.template_parameters['Logo_2_locals'].setX(cur_x+(logo_div/len_item))
|
||||||
logo_credit.setFixedSize(self.template_parameters['Logo_2_size'])
|
logo_credit.setFixedSize(self.template_parameters['Logo_2_size'])
|
||||||
if logo_run[0] == ' ':
|
if logo_run[0] == ' ':
|
||||||
@@ -721,10 +763,34 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
existing_layout = project.layoutManager().layoutByName(self.layout.name())
|
existing_layout = project.layoutManager().layoutByName(self.layout.name())
|
||||||
if existing_layout:
|
if existing_layout:
|
||||||
#if self.radioButton_12.isChecked() != 1:
|
self.QMBquestion = QMessageBox()
|
||||||
project.layoutManager().removeLayout(existing_layout)
|
self.QMBquestion.setWindowTitle(u"Attention !")
|
||||||
|
self.QMBquestion.setIcon(QMessageBox.Icon.Warning)
|
||||||
|
self.QMBquestion.setText("Mise en page existante, la mise en page va être écrasée !")
|
||||||
|
self.QMBquestion.setStandardButtons(QMessageBox.StandardButton(0x00004000)|QMessageBox.StandardButton(0x00010000))
|
||||||
|
self.QMBquestion.addButton(QPushButton('Autre mise en page'),QMessageBox.ButtonRole(0))
|
||||||
|
self.QMBquestion = self.QMBquestion.exec()
|
||||||
|
|
||||||
result = project.layoutManager().addLayout(self.layout)
|
#if self.radioButton_12.isChecked() != 1:
|
||||||
|
if self.QMBquestion == QMessageBox.StandardButton(0x00004000):
|
||||||
|
project.layoutManager().removeLayout(existing_layout)
|
||||||
|
result = project.layoutManager().addLayout(self.layout)
|
||||||
|
elif self.QMBquestion != QMessageBox.StandardButton(0x00010000):
|
||||||
|
LayoutCOUNT=0
|
||||||
|
arrayManager = []
|
||||||
|
for AddArrayManager in project.layoutManager().layouts():
|
||||||
|
arrayManager.append(AddArrayManager.name())
|
||||||
|
arrayManager.sort()
|
||||||
|
for LayoutNAME in arrayManager:
|
||||||
|
if LayoutNAME == layout_name:
|
||||||
|
LayoutCOUNT = LayoutCOUNT+1
|
||||||
|
if LayoutNAME == layout_name+"¶"+str(LayoutCOUNT):
|
||||||
|
LayoutCOUNT=LayoutCOUNT+1
|
||||||
|
layout_name = (layout_name+"¶"+str(LayoutCOUNT))
|
||||||
|
self.layout.setName(layout_name)
|
||||||
|
|
||||||
|
else:
|
||||||
|
existing_layout = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -737,8 +803,22 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
fichier_mise_en_page = layout_name
|
fichier_mise_en_page = layout_name
|
||||||
layout_modifie = QgsProject.instance().layoutManager().layoutByName(fichier_mise_en_page)
|
layout_modifie = QgsProject.instance().layoutManager().layoutByName(fichier_mise_en_page)
|
||||||
iface.openLayoutDesigner(layout_modifie)
|
try:
|
||||||
self.close()
|
if (self.QMBquestion == QMessageBox.AcceptRole):
|
||||||
|
TryMessage = (self.QMBquestion == QMessageBox.AcceptRole)
|
||||||
|
elif (self.QMBquestion == QMessageBox.Yes):
|
||||||
|
TryMessage = (self.QMBquestion == QMessageBox.Yes)
|
||||||
|
else:
|
||||||
|
TryMessage = False
|
||||||
|
del self.QMBquestion
|
||||||
|
except:
|
||||||
|
TryMessage = True
|
||||||
|
|
||||||
|
if TryMessage == True:
|
||||||
|
iface.openLayoutDesigner(layout_modifie)
|
||||||
|
self.close()
|
||||||
|
else:
|
||||||
|
self.activateWindow()
|
||||||
|
|
||||||
def actualisation_mise_en_page(self):
|
def actualisation_mise_en_page(self):
|
||||||
values_page = self.comboBox.currentText()
|
values_page = self.comboBox.currentText()
|
||||||
@@ -770,7 +850,6 @@ class AutoMap_Editor(QDialog, EDITOR_CLASS):
|
|||||||
bar_echelle.setUnits(QgsUnitTypes.DistanceKilometers)
|
bar_echelle.setUnits(QgsUnitTypes.DistanceKilometers)
|
||||||
bar_echelle.setUnitLabel("km")
|
bar_echelle.setUnitLabel("km")
|
||||||
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.04)/1000))
|
bar_echelle.setUnitsPerSegment(round((echelle.scale()*0.04)/1000))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
bar_echelle.setUnits(QgsUnitTypes.DistanceMeters)
|
bar_echelle.setUnits(QgsUnitTypes.DistanceMeters)
|
||||||
bar_echelle.setUnitLabel("m")
|
bar_echelle.setUnitLabel("m")
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa_AutoMap
|
name=CenRa_AutoMap
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=CenRa_AutoMap
|
description=CenRa_AutoMap
|
||||||
version=0.1.10
|
version=2.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
|
|||||||
|
|
||||||
hasProcessingProvider=no
|
hasProcessingProvider=no
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_AutoMap:</h2></br><p><h3>13/01/2025 - Version 0.1.10: </h3> - Correctif.</br></p></br><p><h3>07/01/2025 - Version 0.1.9: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>19/12/2024 - Version 0.1.8: </h3> - Nouvelle mise en page.</br> - Incrémentation automatique de nouveau modele de mise en page. </br> - Correctif de bug.</p></br><p><h3>21/10/2024 - Version 0.1.7: </h3> - Epurations du code.</p></br><p><h3>07/10/2024 - Version 0.1.6: </h3> - Option de bibliotheque de logo custome.</p></br><p><h3>03/10/2024 - Version 0.1.5: </h3> - Remonte la fênetre dans la pille.</br> - Gestion du nombre de colonne dans la légend.</br></p></br><p><h3>02/10/2024 - Version 0.1.4: </h3> - Mise en page plein écrant.</br></p></br><p><h3>01/10/2024 - Version 0.1.3: </h3> - Récupération du titre et sous-titre pour mise en page existente.</br> - Integration de bibliotheque de logo.</br> - Integration de gestionaire pour les source de donnée.</br> - Mise en place d'une bar d'echelle adaptative. </br></p></br><p><h3>30/09/2024 - Version 0.1.2: </h3> - Activation du thème. </br> - Ajouter une carte de suivie. </br><p></br><h3>27/09/2024 - Version 0.1.1: </h3> - Ajout d'une liste déroulante pour les sources de données. </br>- Bouton pour ajouter des fonts de carte customisés. </br>- Fonctionnalité de génération d'atlas. </p></br><p><h3>26/09/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_AutoMap avec une seul mise en page. </p></br>
|
changelog=<h2>CenRa_AUTOMAP:</h2></br><p><h3>19/05/2025 - Version 2.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>11/04/2025 - Version 1.7: </h3> - Correctif d'orthographe.</p></br><p><h3>09/04/2025 - Version 1.6: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 1.5: </h3> - Optimisation pour le TT.</p></br><p><h3>03/04/2025 - Version 1.4: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 1.3: </h3> - Fenêtre redimensionnable avec déplaçable avec la mollette sourit.</p></br><p><h3>25/02/2025 - Version 1.2: </h3> - DockWidget pour ouverture de couche avec theme.</p></br><p><h3>28/01/2025 - Version 1.1: </h3> - Multi-Composeur pris en charge.</p></br><p><h3>27/01/2025 - Version 1.0: </h3> - Version releases.</br> - Ajoute un message d'avertissement au moment d'écraser la mise en page.</br> - Ajoute prénom et nom dans la réalisation.</br> - Utilisation de Calibri.</p></br><p><h3>13/01/2025 - Version 0.1.10: </h3> - Correctif.</p></br><p><h3>07/01/2025 - Version 0.1.9: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>19/12/2024 - Version 0.1.8: </h3> - Nouvelle mise en page.</br> - Incrémentation automatique de nouveau modele de mise en page. </br> - Correctif de bug.</p></br><p><h3>21/10/2024 - Version 0.1.7: </h3> - Epurations du code.</p></br><p><h3>07/10/2024 - Version 0.1.6: </h3> - Option de bibliotheque de logo custome.</p></br><p><h3>03/10/2024 - Version 0.1.5: </h3> - Remonte la fênetre dans la pille.</br> - Gestion du nombre de colonne dans la légend.</br></p></br><p><h3>02/10/2024 - Version 0.1.4: </h3> - Mise en page plein écrant.</br></p></br><p><h3>01/10/2024 - Version 0.1.3: </h3> - Récupération du titre et sous-titre pour mise en page existente.</br> - Integration de bibliotheque de logo.</br> - Integration de gestionaire pour les source de donnée.</br> - Mise en place d'une bar d'echelle adaptative. </br></p></br><p><h3>30/09/2024 - Version 0.1.2: </h3> - Activation du thème. </br> - Ajouter une carte de suivie. </br><p></br><h3>27/09/2024 - Version 0.1.1: </h3> - Ajout d'une liste déroulante pour les sources de données. </br>- Bouton pour ajouter des fonts de carte customisés. </br>- Fonctionnalité de génération d'atlas. </p></br><p><h3>26/09/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_AutoMap avec une seul mise en page. </p></br>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=python
|
tags=python
|
||||||
|
|||||||
@@ -0,0 +1,205 @@
|
|||||||
|
import logging
|
||||||
|
import os
|
||||||
|
from collections import namedtuple
|
||||||
|
from enum import Enum
|
||||||
|
from functools import partial
|
||||||
|
from pathlib import Path
|
||||||
|
from xml.dom.minidom import parseString
|
||||||
|
from qgis.gui import *
|
||||||
|
import qgis
|
||||||
|
from importlib import import_module
|
||||||
|
from qgis.core import (
|
||||||
|
NULL,
|
||||||
|
QgsApplication,
|
||||||
|
QgsScaleBarSettings,
|
||||||
|
QgsDataSourceUri,
|
||||||
|
QgsProject,
|
||||||
|
QgsProviderConnectionException,
|
||||||
|
QgsProviderRegistry,
|
||||||
|
QgsRasterLayer,
|
||||||
|
QgsSettings,
|
||||||
|
QgsVectorLayer,
|
||||||
|
QgsGeometry,
|
||||||
|
QgsPrintLayout,
|
||||||
|
QgsReadWriteContext,
|
||||||
|
QgsLayoutItemMap,
|
||||||
|
QgsLayoutItemPage,
|
||||||
|
QgsLayoutSize,
|
||||||
|
QgsUnitTypes,
|
||||||
|
QgsLayoutPoint,
|
||||||
|
QgsLayoutItemLabel,
|
||||||
|
QgsLayoutItemPicture,
|
||||||
|
QgsLayoutItemLegend,
|
||||||
|
QgsLegendStyle,
|
||||||
|
QgsLayoutItemScaleBar,
|
||||||
|
QgsLayerTreeGroup,
|
||||||
|
QgsCoordinateReferenceSystem,
|
||||||
|
QgsCoordinateTransform,
|
||||||
|
QgsLayerTree,
|
||||||
|
QgsLayoutTableColumn,
|
||||||
|
QgsRectangle,
|
||||||
|
QgsLayoutItemMapOverviewStack,
|
||||||
|
QgsMapThemeCollection,
|
||||||
|
)
|
||||||
|
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
||||||
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
||||||
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
|
from qgis.PyQt.QtWidgets import (
|
||||||
|
QDockWidget,
|
||||||
|
QAction,
|
||||||
|
QMessageBox,
|
||||||
|
QPushButton,
|
||||||
|
QDockWidget,
|
||||||
|
QFileDialog,
|
||||||
|
QInputDialog,
|
||||||
|
QMenu,
|
||||||
|
QToolButton,
|
||||||
|
QTableWidget,
|
||||||
|
QTableWidgetItem,
|
||||||
|
QVBoxLayout,
|
||||||
|
)
|
||||||
|
import psycopg2
|
||||||
|
try:
|
||||||
|
from PyQt5.QtCore import QSettings
|
||||||
|
from PyQt5 import QtGui
|
||||||
|
from PyQt5 import QtWidgets
|
||||||
|
except:
|
||||||
|
from PyQt6.QtCore import QSettings
|
||||||
|
from PyQt6 import QtGui
|
||||||
|
from PyQt6 import QtWidgets
|
||||||
|
from qgis.PyQt.QtXml import QDomDocument
|
||||||
|
from qgis.utils import iface
|
||||||
|
import glob
|
||||||
|
try:
|
||||||
|
|
||||||
|
Enabled = True
|
||||||
|
from .tools.StyleLayer import *
|
||||||
|
except:
|
||||||
|
Enabled = False
|
||||||
|
from .tools.resources import (
|
||||||
|
load_ui,
|
||||||
|
resources_path,
|
||||||
|
send_issues,
|
||||||
|
)
|
||||||
|
from .issues import CenRa_Issues
|
||||||
|
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
EDITOR_CLASS = load_ui('CenRa_AutoMapStyle_base.ui')
|
||||||
|
LOGGER = logging.getLogger('CenRa_AutoMapStyle')
|
||||||
|
|
||||||
|
class AutoMap_Style(QDockWidget, EDITOR_CLASS):
|
||||||
|
|
||||||
|
def __init__(self, parent=None):
|
||||||
|
_ = parent
|
||||||
|
super().__init__()
|
||||||
|
self.setupUi(self)
|
||||||
|
self.settings = QgsSettings()
|
||||||
|
self.s = QSettings()
|
||||||
|
|
||||||
|
self.toolButton.setIcon(QtGui.QIcon(resources_path('icons','loader.png')))
|
||||||
|
|
||||||
|
self.loadComboBox()
|
||||||
|
self.toolButton.clicked.connect(self.loadStyle)
|
||||||
|
|
||||||
|
def loadComboBox(self):
|
||||||
|
style = self.comboBox
|
||||||
|
style.clear()
|
||||||
|
style.addItem('')
|
||||||
|
style.addItem('Foncier')
|
||||||
|
style.addItem('Administratif')
|
||||||
|
|
||||||
|
def loadStyle(self):
|
||||||
|
style = self.comboBox.currentText()
|
||||||
|
if style == 'Foncier':
|
||||||
|
self.loadFoncier()
|
||||||
|
if style == 'Administratif':
|
||||||
|
self.loadAdministratif()
|
||||||
|
|
||||||
|
def loginfo(self):
|
||||||
|
InputDialog = QInputDialog()
|
||||||
|
mdp = InputDialog.getText(None,'Foncier','Mot de pass base foncier:')
|
||||||
|
return mdp
|
||||||
|
|
||||||
|
def loadAdministratif(self):
|
||||||
|
mtc = QgsProject.instance().mapThemeCollection()
|
||||||
|
theme_name = 'Administratif'
|
||||||
|
theme_state = mtc.mapThemeState(theme_name)
|
||||||
|
|
||||||
|
mdp = self.loginfo()[0]
|
||||||
|
if mdp != '':
|
||||||
|
# couche = [['_form_power_rename','_form_power_rename_contour_2025'],['_42_bois_du_roy','_42_bois_du_roy_habitat_2021']]
|
||||||
|
couche = [['administratif','departements2024','gid'],['administratif','v_communes','id']]
|
||||||
|
for schema_table in couche:
|
||||||
|
schema = schema_table[0]
|
||||||
|
table = schema_table[1]
|
||||||
|
key = schema_table[2]
|
||||||
|
uri = QgsDataSourceUri()
|
||||||
|
uri.setConnection(host ,port ,dbname ,os_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
|
||||||
|
uri.setDataSource(schema, table, "geom")
|
||||||
|
uri.setKeyColumn(key)
|
||||||
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
|
if layer.isValid() == True:
|
||||||
|
layerName = layer.name()
|
||||||
|
listStyle = layer.listStylesInDatabase()
|
||||||
|
try:
|
||||||
|
StyleExist = True
|
||||||
|
indexStyle = (listStyle[2].index(layerName))
|
||||||
|
except:
|
||||||
|
StyleExist = False
|
||||||
|
if StyleExist:
|
||||||
|
StyleId = (listStyle[1][indexStyle])
|
||||||
|
styleTuple = layer.getStyleFromDatabase(StyleId)
|
||||||
|
styleqml = styleTuple[0]
|
||||||
|
styledoc = QDomDocument()
|
||||||
|
styledoc.setContent(styleqml)
|
||||||
|
layer.importNamedStyle(styledoc)
|
||||||
|
|
||||||
|
# Ajout de la couche au canevas QGIS
|
||||||
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
|
||||||
|
layer_record = QgsMapThemeCollection.MapThemeLayerRecord(layer)
|
||||||
|
theme_state.addLayerRecord(layer_record)
|
||||||
|
mtc.insert(theme_name, theme_state)
|
||||||
|
|
||||||
|
def loadFoncier(self):
|
||||||
|
mtc = QgsProject.instance().mapThemeCollection()
|
||||||
|
theme_name = 'Foncier'
|
||||||
|
theme_state = mtc.mapThemeState(theme_name)
|
||||||
|
|
||||||
|
mdp = self.loginfo()[0]
|
||||||
|
if mdp != '':
|
||||||
|
# couche = [['_form_power_rename','_form_power_rename_contour_2025'],['_42_bois_du_roy','_42_bois_du_roy_habitat_2021']]
|
||||||
|
couche = [['sites','v_sites_parcelles'],['sites','v_sites'],['inventaires','suivi_zh'],['inventaires','suivi_ps']]
|
||||||
|
for schema_table in couche:
|
||||||
|
schema = schema_table[0]
|
||||||
|
table = schema_table[1]
|
||||||
|
uri = QgsDataSourceUri()
|
||||||
|
uri.setConnection(host ,port ,dbname ,os_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
|
||||||
|
uri.setDataSource(schema, table, "geom")
|
||||||
|
uri.setKeyColumn('gid')
|
||||||
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
|
if layer.isValid() == True:
|
||||||
|
layerName = layer.name()
|
||||||
|
listStyle = layer.listStylesInDatabase()
|
||||||
|
try:
|
||||||
|
StyleExist = True
|
||||||
|
indexStyle = (listStyle[2].index(layerName))
|
||||||
|
except:
|
||||||
|
StyleExist = False
|
||||||
|
if StyleExist:
|
||||||
|
StyleId = (listStyle[1][indexStyle])
|
||||||
|
styleTuple = layer.getStyleFromDatabase(StyleId)
|
||||||
|
styleqml = styleTuple[0]
|
||||||
|
styledoc = QDomDocument()
|
||||||
|
styledoc.setContent(styleqml)
|
||||||
|
layer.importNamedStyle(styledoc)
|
||||||
|
|
||||||
|
# Ajout de la couche au canevas QGIS
|
||||||
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
|
||||||
|
layer_record = QgsMapThemeCollection.MapThemeLayerRecord(layer)
|
||||||
|
theme_state.addLayerRecord(layer_record)
|
||||||
|
mtc.insert(theme_name, theme_state)
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
import sys
|
|
||||||
import socket
|
|
||||||
import os
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
#print(IPAddr)
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
host = "100.100.100.81"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig4269"
|
|
||||||
sigdb="sig4269"
|
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
|
||||||
refdb="ref_geo01"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
host = "192.168.1.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig0726"
|
|
||||||
sigdb="sig0726"
|
|
||||||
refdb="ref_geo0726"
|
|
||||||
password = "McVities"
|
|
||||||
if sys.platform == 'linux':
|
|
||||||
os_user = os.environ['USER']
|
|
||||||
else:
|
|
||||||
os_user = os.environ['USERNAME']
|
|
||||||
if os_user == 'STAGE':
|
|
||||||
os_user='stage'
|
|
||||||
if os_user == 'Administrateur':
|
|
||||||
os_user='stage'
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Binary file not shown.
@@ -4,6 +4,7 @@ import configparser
|
|||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import base64
|
import base64
|
||||||
|
import os
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
@@ -107,25 +108,15 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
def pyperclip():
|
||||||
from CenRa_METABASE.tools.PythonSQL import host,port,dbname,password,os_user
|
dst = dirname(dirname(__file__))+"\\tools\\"
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
if os.access('N:/',os.R_OK):
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/StyleLayer.py'
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
try:
|
||||||
res_ident = first_cur.fetchone()
|
shutil.copy(src, dst)
|
||||||
|
except:
|
||||||
|
print('404')
|
||||||
|
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
|
||||||
user = res_ident[1]
|
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -158,7 +149,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
@@ -0,0 +1,94 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>CenRa_AutoMapStyle</class>
|
||||||
|
<widget class="QDockWidget" name="CenRa_AutoMapStyle">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>48</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="floating">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="features">
|
||||||
|
<set>QDockWidget::DockWidgetClosable|QDockWidget::DockWidgetMovable</set>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>CenRa_AutoMap</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="dockWidgetContents">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing">
|
||||||
|
<number>5</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Style:</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QToolButton" name="toolButton">
|
||||||
|
<property name="autoFillBackground">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -12,17 +12,19 @@ import qgis
|
|||||||
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
import socket
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
|
pyperclip,
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
|
pyperclip()
|
||||||
from .copie_editor import Copie_Editor
|
from .copie_editor import Copie_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
class PgCopie:
|
class PgCopie:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -66,13 +68,17 @@ class PgCopie:
|
|||||||
self.copie_editor = QAction(icon, 'Copie',None)
|
self.copie_editor = QAction(icon, 'Copie',None)
|
||||||
self.toolBar.addAction(self.copie_editor)
|
self.toolBar.addAction(self.copie_editor)
|
||||||
self.copie_editor.triggered.connect(self.open_editor)
|
self.copie_editor.triggered.connect(self.open_editor)
|
||||||
|
self.copie_editor.setEnabled(False)
|
||||||
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.copie_editor.setEnabled(True)
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
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/'))
|
||||||
|
|||||||
+42
-29
@@ -9,17 +9,23 @@ import qgis
|
|||||||
from qgis.PyQt.QtCore import QSettings
|
from qgis.PyQt.QtCore import QSettings
|
||||||
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog
|
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from PyQt5.QtCore import *
|
|
||||||
from PyQt5.QtGui import *
|
from qgis.PyQt.QtCore import *
|
||||||
from PyQt5 import QtGui
|
from qgis.PyQt.QtGui import *
|
||||||
|
from qgis.PyQt import QtGui
|
||||||
|
|
||||||
from qgis.core import *
|
from qgis.core import *
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
|
import os
|
||||||
|
|
||||||
from .tools.PythonSQL import *
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
from .tools.SQLRequet import *
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
@@ -62,21 +68,22 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# tablename
|
# tablename
|
||||||
source_tablename = [s for s in list_sources if "table" in s][0].split('"')[3]
|
source_tablename = [s for s in list_sources if "table" in s][0].split('"')[3]
|
||||||
|
|
||||||
|
|
||||||
|
account = login_base("account")
|
||||||
|
sigdb = account[5]
|
||||||
|
|
||||||
|
|
||||||
if source_db != sigdb:
|
if source_db != sigdb:
|
||||||
#self.iface.messageBar().pushMessage(u"Un référentiel ne peut être copié, utilisez les filtres !", level=QgsMessageBar.CRITICAL, duration=10)
|
#self.iface.messageBar().pushMessage(u"Un référentiel ne peut être copié, utilisez les filtres !", level=QgsMessageBar.CRITICAL, duration=10)
|
||||||
self.iface.messageBar().pushMessage("Ooops", u"Vous ne pouvez copier des couches que dans sigXX", level=Qgis.Critical, duration=5)
|
self.iface.messageBar().pushMessage("Ooops", u"Vous ne pouvez copier des couches que dans sigXX", level=Qgis.Critical, duration=5)
|
||||||
|
else:
|
||||||
else :
|
user = account[0]
|
||||||
|
mdp = account[1]
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
host = account[2]
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
port = account[3]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
dbname = account[4]
|
||||||
res_ident = first_cur.fetchone()
|
cur = account[7]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
con = account[8]
|
||||||
user = res_ident[1]
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
# Creation de la liste des schemas de la base de donnees
|
# Creation de la liste des schemas de la base de donnees
|
||||||
SQL = """WITH list_schema AS (
|
SQL = """WITH list_schema AS (
|
||||||
@@ -109,21 +116,21 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.exec_()
|
result = self.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result:
|
if result:
|
||||||
#******************************debut script*********************************
|
#******************************debut script*********************************
|
||||||
|
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
# Récupération de la couche active
|
# Récupération de la couche active
|
||||||
layer = self.iface.activeLayer()
|
layer = self.iface.activeLayer()
|
||||||
|
|
||||||
@@ -158,7 +165,6 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
else :
|
else :
|
||||||
SQL_table = "CREATE TABLE " + schema + "." + tablename + " AS SELECT * FROM " + source_schema + "." + source_tablename
|
SQL_table = "CREATE TABLE " + schema + "." + tablename + " AS SELECT * FROM " + source_schema + "." + source_tablename
|
||||||
|
|
||||||
|
|
||||||
SQL_pkey = "ALTER TABLE " + schema + "." + tablename + " ADD CONSTRAINT " + tablename + "_pkey" + " PRIMARY KEY (gid)"
|
SQL_pkey = "ALTER TABLE " + schema + "." + tablename + " ADD CONSTRAINT " + tablename + "_pkey" + " PRIMARY KEY (gid)"
|
||||||
SQL_sequence_01 = "CREATE SEQUENCE " + schema + "." + tablename + "_gid_seq" + " INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;"
|
SQL_sequence_01 = "CREATE SEQUENCE " + schema + "." + tablename + "_gid_seq" + " INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1 CACHE 1;"
|
||||||
SQL_sequence_02 = "ALTER TABLE " + schema + "." + tablename + " ALTER COLUMN gid SET DEFAULT nextval(\'" + schema + "." + tablename + "_gid_seq\'::regclass);"
|
SQL_sequence_02 = "ALTER TABLE " + schema + "." + tablename + " ALTER COLUMN gid SET DEFAULT nextval(\'" + schema + "." + tablename + "_gid_seq\'::regclass);"
|
||||||
@@ -169,7 +175,7 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
SQL_trigger_area_ha = "CREATE TRIGGER area_ha" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.area_ha();"
|
SQL_trigger_area_ha = "CREATE TRIGGER area_ha" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.area_ha();"
|
||||||
SQL_trigger_length_m = "CREATE TRIGGER length_m" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.length_m();"
|
SQL_trigger_length_m = "CREATE TRIGGER length_m" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.length_m();"
|
||||||
SQL_trigger_length_km = "CREATE TRIGGER length_km" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.length_km();"
|
SQL_trigger_length_km = "CREATE TRIGGER length_km" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.length_km();"
|
||||||
SQL_trigger_coordonnees = "CREATE TRIGGER coordonnees" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.coordonnees();"
|
SQL_trigger_coordonnees = "CREATE TRIGGER coordonnees" + tablename + " BEFORE INSERT OR UPDATE ON " + schema + "." + tablename + " FOR EACH ROW EXECUTE PROCEDURE ref.coordonnees();"
|
||||||
|
|
||||||
cur.execute(SQL_table)
|
cur.execute(SQL_table)
|
||||||
cur.execute(SQL_pkey)
|
cur.execute(SQL_pkey)
|
||||||
@@ -178,6 +184,13 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
|
|||||||
cur.execute(SQL_sequence_03)
|
cur.execute(SQL_sequence_03)
|
||||||
cur.execute(SQL_sequence_04)
|
cur.execute(SQL_sequence_04)
|
||||||
|
|
||||||
|
RETURNE = "SELECT pg_get_serial_sequence('"+schema + "."+ tablename+"','gid')"
|
||||||
|
cur.execute(RETURNE)
|
||||||
|
sequence_name = cur.fetchone()[0]
|
||||||
|
print(sequence_name)
|
||||||
|
SQL_GRANT_TABLE="GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON "+schema+"."+tablename+" TO grp_qgis;GRANT DELETE, INSERT, REFERENCES, SELECT, TRIGGER, TRUNCATE, UPDATE ON "+schema+"."+tablename+" TO grp_sig;GRANT ALL ON SEQUENCE "+sequence_name+" TO grp_qgis;"
|
||||||
|
cur.execute(SQL_GRANT_TABLE)
|
||||||
|
|
||||||
if layer.wkbType() == QgsWkbTypes.PointGeometry :
|
if layer.wkbType() == QgsWkbTypes.PointGeometry :
|
||||||
cur.execute(SQL_trigger_coordonnees)
|
cur.execute(SQL_trigger_coordonnees)
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRA_COPIE
|
name=CenRA_COPIE
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=Permet la copie d'une table dans une base PostGis
|
description=Permet la copie d'une table dans une base PostGis
|
||||||
version=2.1
|
version=3.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -19,7 +20,7 @@ email=si_besoin@cen-rhonealpes.fr
|
|||||||
# Recommended items:
|
# Recommended items:
|
||||||
|
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_COPIE:</h2></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>22/10/2024 - Version 2:</h3>- Refonte du code.</p></br><p><h3>13/09/2024 - Version 1.5:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
changelog=<h2>CenRa_COPIE:</h2></br><p><h3>19/05/2025 - Version 3.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>11/04/2025 - Version 2.5: </h3> - Correctif de bug.</p></br><p><h3>09/04/2025 - Version 2.4: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 2.3: </h3> - Optimisation pour le TT.</p></br><p><h3>03/04/2025 - Version 2.2: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>22/10/2024 - Version 2:</h3>- Refonte du code.</p></br><p><h3>13/09/2024 - Version 1.5:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=cenra, database, table
|
tags=cenra, database, table
|
||||||
|
|||||||
@@ -1,174 +0,0 @@
|
|||||||
import sys
|
|
||||||
import socket
|
|
||||||
import os
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
host = "100.100.100.11"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig4269"
|
|
||||||
sigdb="sig4269"
|
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
|
||||||
refdb="ref_geo01"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
host = "192.168.1.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig0726"
|
|
||||||
sigdb="sig0726"
|
|
||||||
refdb="ref_geo0726"
|
|
||||||
password = "McVities"
|
|
||||||
if sys.platform == 'linux':
|
|
||||||
os_user = os.environ['USER']
|
|
||||||
else:
|
|
||||||
os_user = os.environ['USERNAME']
|
|
||||||
if os_user == 'STAGE':
|
|
||||||
os_user='stage'
|
|
||||||
if os_user == 'Administrateur':
|
|
||||||
os_user = 'stage'
|
|
||||||
|
|
||||||
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_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_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,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_vegethab_point = """(
|
|
||||||
gid serial NOT NULL ,
|
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_1 bigint,
|
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_2 bigint,
|
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(Point,2154)
|
|
||||||
)
|
|
||||||
"""
|
|
||||||
champ_vegethab_multilinestring = """(
|
|
||||||
gid serial NOT NULL ,
|
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_1 bigint,
|
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_2 bigint,
|
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(MultiLineString,2154)
|
|
||||||
)
|
|
||||||
"""
|
|
||||||
champ_vegethab_multipolygon = """(
|
|
||||||
gid serial NOT NULL ,
|
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_1 bigint,
|
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_2 bigint,
|
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(MultiPolygon,2154)
|
|
||||||
)
|
|
||||||
"""
|
|
||||||
@@ -1,172 +1,141 @@
|
|||||||
import sys
|
|
||||||
import socket
|
geom = "geom"
|
||||||
import os
|
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))"""
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
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))"""
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
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))"""
|
||||||
host = "100.100.100.11"
|
|
||||||
port = "5432"
|
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
||||||
dbname = "sig4269"
|
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
||||||
sigdb="sig4269"
|
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
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))"""
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
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))
|
||||||
port = "5432"
|
"""
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
champ_vegethab_point = """(
|
||||||
refdb="ref_geo01"
|
gid serial NOT NULL ,
|
||||||
password = "McVities"
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
host = "192.168.1.201"
|
occupati_1 bigint,
|
||||||
port = "5432"
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
dbname = "sig0726"
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
sigdb="sig0726"
|
occupati_2 bigint,
|
||||||
refdb="ref_geo0726"
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
password = "McVities"
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
if sys.platform == 'linux':
|
occupati_3 bigint,
|
||||||
os_user = os.environ['USER']
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
else:
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
os_user = os.environ['USERNAME']
|
surface_m2 numeric,
|
||||||
if os_user == 'STAGE':
|
surface_ha numeric,
|
||||||
os_user='stage'
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
|
date_creat date,
|
||||||
geom = "geom"
|
date_maj date,
|
||||||
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))"""
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
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))
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_point = """(
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
occupati_1 bigint,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_2 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(Point,2154)
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_3 bigint,
|
"""
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multilinestring = """(
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
surface_m2 numeric,
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
date_creat date,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(Point,2154)
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multilinestring = """(
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
occupati_1 bigint,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_2 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiLineString,2154)
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_3 bigint,
|
"""
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multipolygon = """(
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
surface_m2 numeric,
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
date_creat date,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(MultiLineString,2154)
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multipolygon = """(
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
date_sais date,
|
||||||
occupati_1 bigint,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_2 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiPolygon,2154)
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(MultiPolygon,2154)
|
|
||||||
)
|
|
||||||
"""
|
"""
|
||||||
@@ -6,6 +6,7 @@ import tempfile
|
|||||||
import base64
|
import base64
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
import os
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -89,7 +90,7 @@ def resources_path(*args):
|
|||||||
:return: Absolute path to the resources folder.
|
:return: Absolute path to the resources folder.
|
||||||
:rtype: str
|
:rtype: str
|
||||||
"""
|
"""
|
||||||
path = abspath(abspath(join(plugin_path(), "CenRa_Copie\\tools")))
|
path = abspath(abspath(join(plugin_path(), "CenRa_COPIE\\tools")))
|
||||||
for item in args:
|
for item in args:
|
||||||
path = abspath(join(path, item))
|
path = abspath(join(path, item))
|
||||||
return path
|
return path
|
||||||
@@ -107,24 +108,15 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
def pyperclip():
|
||||||
from CenRa_Metabase.resources.PythonSQL import host,port,dbname,password,os_user
|
dst = dirname(dirname(__file__))+"\\tools\\"
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
if os.access('N:/',os.R_OK):
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py'
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
try:
|
||||||
res_ident = first_cur.fetchone()
|
shutil.copy(src, dst)
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
except:
|
||||||
user = res_ident[1]
|
print('404')
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -157,7 +149,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -12,17 +12,20 @@ import qgis
|
|||||||
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
import socket
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
|
pyperclip,
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
|
pyperclip()
|
||||||
from .flux_editor import Flux_Editor
|
from .flux_editor import Flux_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
|
|
||||||
class PgFlux:
|
class PgFlux:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -63,16 +66,20 @@ class PgFlux:
|
|||||||
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)
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.flux_editor.setEnabled(True)
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
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/'))
|
||||||
|
|||||||
+465
-56
@@ -11,9 +11,15 @@ 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 QAction, QMenu, QDialog
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from PyQt5.QtCore import *
|
try:
|
||||||
from PyQt5.QtGui import *
|
from PyQt5.QtCore import *
|
||||||
from PyQt5 import QtGui
|
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 *
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
@@ -29,15 +35,20 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
QMessageBox,
|
QMessageBox,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from .tools.PythonSQL import *
|
from .tools.SQLRequet import *
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
|
||||||
from .issues import CenRa_Issues
|
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 webbrowser, os
|
||||||
@@ -45,15 +56,136 @@ import psycopg2
|
|||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
global DeBUG
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
DeBUG = 0
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
|
||||||
res_ident = first_cur.fetchone()
|
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
|
||||||
user = res_ident[1]
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
account = login_base('account')
|
||||||
|
user = account[0]
|
||||||
|
mdp = account[1]
|
||||||
|
host = account[2]
|
||||||
|
port = account[3]
|
||||||
|
dbname = account[4]
|
||||||
|
sigdb = account[5]
|
||||||
|
refdb = account[6]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
except:
|
||||||
|
print('')
|
||||||
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')
|
||||||
|
layerCrs = QgsCoordinateReferenceSystem('EPSG:2154')
|
||||||
|
TranformCRS = QgsCoordinateTransform(layerCrs, targetCrs,QgsProject.instance())
|
||||||
|
|
||||||
class Flux_Editor(QDialog, EDITOR_CLASS):
|
class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||||
|
|
||||||
@@ -70,8 +202,9 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
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.SelectRows)
|
#self.tableWidget.setSelectionBehavior(QTableWidget.selectRow)
|
||||||
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
|
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger(0))
|
||||||
|
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)
|
||||||
@@ -81,9 +214,20 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.commandLinkButton_2.clicked.connect(self.suppression_flux)
|
self.commandLinkButton_2.clicked.connect(self.suppression_flux)
|
||||||
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.stateChanged.connect(self.modeCarte)
|
||||||
|
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)
|
||||||
layout.addWidget(self.lineEdit)
|
layout.addWidget(self.lineEdit)
|
||||||
|
self.viewer.hide()
|
||||||
|
self.DeBUG.addItem('')
|
||||||
|
self.DeBUG.addItem('01')
|
||||||
|
self.DeBUG.addItem('0726')
|
||||||
|
self.DeBUG.addItem('4269')
|
||||||
|
|
||||||
|
self.DeBUG.hide()
|
||||||
#self.lineEdit.mousePressEvent = self._mousePressEvent
|
#self.lineEdit.mousePressEvent = self._mousePressEvent
|
||||||
|
|
||||||
#metadonnees_plugin = open(self.plugin_path + '/metadata.txt')
|
#metadonnees_plugin = open(self.plugin_path + '/metadata.txt')
|
||||||
@@ -92,6 +236,141 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
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):
|
||||||
|
self.DeBUG.show()
|
||||||
|
|
||||||
|
def mousePressEvent(self, event):
|
||||||
|
global DeBUG
|
||||||
|
if 330 <= event.pos().x() <= 560 and 5 <= event.pos().y() <= 75:
|
||||||
|
DeBUG = DeBUG+1
|
||||||
|
if DeBUG == 3:
|
||||||
|
DeBUG = 0
|
||||||
|
self.ModeDeBUG()
|
||||||
|
else:
|
||||||
|
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()
|
||||||
|
|
||||||
def bd_source(self):
|
def bd_source(self):
|
||||||
self.activateWindow()
|
self.activateWindow()
|
||||||
@@ -119,7 +398,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.exec_()
|
result = self.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result:
|
if result:
|
||||||
# Do something useful here - delete the line containing pass and
|
# Do something useful here - delete the line containing pass and
|
||||||
@@ -143,7 +422,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.exec_()
|
result = self.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result:
|
if result:
|
||||||
# Do something useful here - delete the line containing pass and
|
# Do something useful here - delete the line containing pass and
|
||||||
@@ -158,6 +437,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
def initialisation_flux(self):
|
def initialisation_flux(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
|
# 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':
|
||||||
@@ -175,6 +455,13 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
cur.execute(custom_list)
|
cur.execute(custom_list)
|
||||||
list_schema = cur.fetchall()
|
list_schema = cur.fetchall()
|
||||||
|
|
||||||
|
SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """
|
||||||
|
cur.execute(SQLraster)
|
||||||
|
list_raster = cur.fetchall()
|
||||||
|
RasterList = []
|
||||||
|
for rasterFind in list_raster:
|
||||||
|
RasterList.append(rasterFind[0])
|
||||||
|
|
||||||
self.tableWidget.setRowCount(len(list_schema))
|
self.tableWidget.setRowCount(len(list_schema))
|
||||||
self.tableWidget.setColumnCount(3)
|
self.tableWidget.setColumnCount(3)
|
||||||
i=0
|
i=0
|
||||||
@@ -182,7 +469,11 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
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])
|
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:])
|
||||||
|
else:
|
||||||
|
table_name=str(value[1])
|
||||||
else:
|
else:
|
||||||
type_val = ''
|
type_val = ''
|
||||||
schema_name=str(value[0])
|
schema_name=str(value[0])
|
||||||
@@ -190,18 +481,36 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
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:]
|
||||||
table_name=str(value[1])
|
if value[0] == value[1][:len(value[0])]:
|
||||||
|
table_name=str(value[1][len(value[0])+1:])
|
||||||
|
else:
|
||||||
|
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'
|
if dbtype == refdb:
|
||||||
|
if (schema_name+'.'+table_name) in RasterList:
|
||||||
|
SVG = 'mIconRaster.svg'
|
||||||
|
else:
|
||||||
|
SVG = 'mIconWfs.svg'
|
||||||
|
itemIcon = QTableWidgetItem()
|
||||||
|
icon = QIcon()
|
||||||
|
icon.addPixmap(QtGui.QPixmap(resources_path('icons',SVG)), QIcon.Mode(0), QIcon.State(1))
|
||||||
|
itemIcon.setIcon(icon)
|
||||||
|
|
||||||
|
else:
|
||||||
|
type_val='agregation'
|
||||||
schema_name=str(value[0])
|
schema_name=str(value[0])
|
||||||
table_name=str(value[1])
|
table_name=str(value[1])
|
||||||
|
|
||||||
item = QTableWidgetItem(type_val)
|
item = QTableWidgetItem(type_val)
|
||||||
self.tableWidget.setItem(i,0,item)
|
if dbtype == refdb:
|
||||||
|
self.tableWidget.setItem(i,0,itemIcon)
|
||||||
|
else:
|
||||||
|
self.tableWidget.setCellWidget(i,0,None)
|
||||||
|
self.tableWidget.setItem(i,0,item)
|
||||||
item = QTableWidgetItem(schema_name)
|
item = QTableWidgetItem(schema_name)
|
||||||
self.tableWidget.setItem(i,1,item)
|
self.tableWidget.setItem(i,1,item)
|
||||||
item = QTableWidgetItem(table_name)
|
item = QTableWidgetItem(table_name)
|
||||||
@@ -211,11 +520,13 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.tableWidget.setColumnWidth(1, 300)
|
self.tableWidget.setColumnWidth(1, 300)
|
||||||
self.tableWidget.setColumnWidth(2, 300)
|
self.tableWidget.setColumnWidth(2, 300)
|
||||||
self.tableWidget.setHorizontalHeaderLabels(["Code","Schema","Table"])
|
self.tableWidget.setHorizontalHeaderLabels(["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))
|
||||||
new_item_text = selected_items[2].text()
|
new_item_text = selected_items[2].text()
|
||||||
|
|
||||||
if not self.item_already_exists(new_item_text):
|
if not self.item_already_exists(new_item_text):
|
||||||
@@ -234,7 +545,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
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.MatchExactly)
|
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
|
||||||
@@ -247,15 +558,31 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
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.Yes | QMessageBox.No)
|
QMessageBox.StandardButton(0x00004000)|QMessageBox.StandardButton(0x00010000))
|
||||||
if self.QMBquestion == QMessageBox.Yes:
|
if self.QMBquestion == QMessageBox.StandardButton(0x00004000):
|
||||||
self.chargement_flux()
|
self.chargement_flux()
|
||||||
|
|
||||||
if self.QMBquestion == QMessageBox.No:
|
if self.QMBquestion == QMessageBox.StandardButton(0x00001000):
|
||||||
print("Annulation du chargement des couches")
|
print("Annulation du chargement des couches")
|
||||||
|
|
||||||
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:
|
||||||
|
uri.setDataSource(schema, table, "rast")
|
||||||
|
uri.setKeyColumn('rid')
|
||||||
|
uri.setSrid('2154')
|
||||||
|
layer = QgsRasterLayer(uri.uri(), table, "postgresraster")
|
||||||
|
else:
|
||||||
|
uri.setDataSource(schema, table, "geom")
|
||||||
|
uri.setKeyColumn('gid')
|
||||||
|
uri.setSrid('2154')
|
||||||
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
|
# Ajout de la couche au canevas QGIS
|
||||||
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
|
||||||
def chargement_flux(self):
|
def chargement_flux(self):
|
||||||
|
|
||||||
@@ -273,17 +600,30 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
return switcher.get(type, "nothing")
|
return switcher.get(type, "nothing")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def displayOnWindows(type, uri, name):
|
def displayOnWindows(type, uri, name):
|
||||||
p = []
|
p = []
|
||||||
|
|
||||||
|
SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """
|
||||||
|
cur.execute(SQLraster)
|
||||||
|
list_raster = cur.fetchall()
|
||||||
|
RasterList = []
|
||||||
|
for rasterFind in list_raster:
|
||||||
|
RasterList.append(rasterFind[0])
|
||||||
|
|
||||||
for row in range(0, self.tableWidget_2.rowCount()):
|
for row in range(0, self.tableWidget_2.rowCount()):
|
||||||
|
color_rgba = 855030089
|
||||||
|
if self.tableWidget_2.item(row, 0).background().color().rgba() != 855030089:
|
||||||
## 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,0).text()
|
code = self.tableWidget_2.item(row,0).text()
|
||||||
schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text()
|
schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text()
|
||||||
if code == 'travaux' or code == 'agregation':
|
if code == 'travaux' or code == 'agregation':
|
||||||
schema = self.tableWidget_2.item(row,1).text()
|
schema = self.tableWidget_2.item(row,1).text()
|
||||||
table = self.tableWidget_2.item(row,2).text()#.split("?", 1)[0]
|
table = self.tableWidget_2.item(row,2).text()
|
||||||
|
else:
|
||||||
|
table = self.tableWidget_2.item(row,2).text()
|
||||||
|
table = schema+'_'+table
|
||||||
if dbtype == refdb:
|
if dbtype == refdb:
|
||||||
# code = self.tableWidget_2.item(row,0).text()
|
# code = self.tableWidget_2.item(row,0).text()
|
||||||
schema = self.tableWidget_2.item(row,1).text()
|
schema = self.tableWidget_2.item(row,1).text()
|
||||||
@@ -293,40 +633,48 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
# 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
|
||||||
|
|
||||||
uri.setDataSource(schema, table, "geom")
|
if (schema+'.'+table) in RasterList:
|
||||||
uri.setKeyColumn('gid')
|
uri.setDataSource(schema, table, "rast")
|
||||||
|
uri.setKeyColumn('rid')
|
||||||
# Chargement de la couche PostGIS
|
uri.setSrid('2154')
|
||||||
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
|
layer = QgsRasterLayer(uri.uri(), table, "postgresraster")
|
||||||
cur.execute(geom_type)
|
|
||||||
list_typegeom = cur.fetchall()
|
|
||||||
print(len(list_typegeom))
|
|
||||||
if len(list_typegeom) > 1:
|
|
||||||
for typegeom in list_typegeom:
|
|
||||||
if typegeom[0] == 'MultiPolygon':
|
|
||||||
uri.setWkbType(QgsWkbTypes.MultiPolygon)
|
|
||||||
elif typegeom[0] == 'MultiLineString':
|
|
||||||
uri.setWkbType(QgsWkbTypes.MultiLineString)
|
|
||||||
elif typegeom[0] == 'Point':
|
|
||||||
uri.setWkbType(QgsWkbTypes.Point)
|
|
||||||
if typegeom[0] == 'Polygon':
|
|
||||||
uri.setWkbType(QgsWkbTypes.Polygon)
|
|
||||||
elif typegeom[0] == 'LineString':
|
|
||||||
uri.setWkbType(QgsWkbTypes.LineString)
|
|
||||||
elif typegeom[0] == 'MultiPoint':
|
|
||||||
uri.setWkbType(QgsWkbTypes.MultiPoint)
|
|
||||||
if (typegeom[0] != None and typegeom[0] != 'Polygon'):
|
|
||||||
uri.setSrid('2154')
|
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
|
||||||
# Ajout de la couche au canevas QGIS
|
|
||||||
QgsProject.instance().addMapLayer(layer)
|
|
||||||
else:
|
|
||||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
|
||||||
# Ajout de la couche au canevas QGIS
|
|
||||||
QgsProject.instance().addMapLayer(layer)
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
else:
|
||||||
|
uri.setDataSource(schema, table, "geom")
|
||||||
|
uri.setKeyColumn('gid')
|
||||||
|
|
||||||
|
# Chargement de la couche PostGIS
|
||||||
|
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:
|
||||||
|
for typegeom in list_typegeom:
|
||||||
|
if typegeom[0] == 'MultiPolygon':
|
||||||
|
uri.setWkbType(QgsWkbTypes.MultiPolygon)
|
||||||
|
elif typegeom[0] == 'MultiLineString':
|
||||||
|
uri.setWkbType(QgsWkbTypes.MultiLineString)
|
||||||
|
elif typegeom[0] == 'Point':
|
||||||
|
uri.setWkbType(QgsWkbTypes.Point)
|
||||||
|
if typegeom[0] == 'Polygon':
|
||||||
|
uri.setWkbType(QgsWkbTypes.Polygon)
|
||||||
|
elif typegeom[0] == 'LineString':
|
||||||
|
uri.setWkbType(QgsWkbTypes.LineString)
|
||||||
|
elif typegeom[0] == 'MultiPoint':
|
||||||
|
uri.setWkbType(QgsWkbTypes.MultiPoint)
|
||||||
|
if (typegeom[0] != None and typegeom[0] != 'Polygon'):
|
||||||
|
uri.setSrid('2154')
|
||||||
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
|
# Ajout de la couche au canevas QGIS
|
||||||
|
QgsProject.instance().addMapLayer(layer)
|
||||||
|
else:
|
||||||
|
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||||
|
# 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))
|
||||||
def combobox_custom(self):
|
def combobox_custom(self):
|
||||||
if dbtype == sigdb:
|
if dbtype == sigdb:
|
||||||
|
self.toolButton.setEnabled(1)
|
||||||
self.comboBox.clear()
|
self.comboBox.clear()
|
||||||
self.comboBox.addItem("toutes les catégories")
|
self.comboBox.addItem("toutes les catégories")
|
||||||
self.comboBox.addItem('00')
|
self.comboBox.addItem('00')
|
||||||
@@ -339,6 +687,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.comboBox.addItem('travaux')
|
self.comboBox.addItem('travaux')
|
||||||
self.comboBox.addItem('form')
|
self.comboBox.addItem('form')
|
||||||
if dbtype == refdb:
|
if dbtype == refdb:
|
||||||
|
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()
|
||||||
@@ -346,8 +695,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.comboBox.addItem("toutes les catégories")
|
self.comboBox.addItem("toutes les catégories")
|
||||||
for baxval in list_schema:
|
for baxval in list_schema:
|
||||||
self.comboBox.addItem(baxval[0])
|
self.comboBox.addItem(baxval[0])
|
||||||
def filtre_dynamique(self, filter_text):
|
|
||||||
|
|
||||||
|
def filtre_dynamique(self, filter_text):
|
||||||
|
if filter_text.find(' ') >= 0:
|
||||||
|
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)
|
||||||
@@ -356,6 +707,64 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
|||||||
if not match:
|
if not match:
|
||||||
break
|
break
|
||||||
|
|
||||||
|
def getCanevas(self):
|
||||||
|
poly = iface.mapCanvas().extent()
|
||||||
|
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"
|
||||||
|
|
||||||
|
cur.execute(SQL_GEOM_CONTOUR)
|
||||||
|
TableContour = cur.fetchall()
|
||||||
|
cur.execute(SQL_GEOM_HABITAT)
|
||||||
|
TableHabitat = cur.fetchall()
|
||||||
|
cur.execute(SQL_GEOM_EU_HABITAT)
|
||||||
|
TableEuHabitat = cur.fetchall()
|
||||||
|
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_LIGNE)
|
||||||
|
TableTravauxLigne = cur.fetchall()
|
||||||
|
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POINT)
|
||||||
|
TableTravauxPoint = cur.fetchall()
|
||||||
|
cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY)
|
||||||
|
TableTravauxPoly = cur.fetchall()
|
||||||
|
|
||||||
|
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]+"""';""")
|
||||||
|
TableSomme = cur.fetchall()[0][0]
|
||||||
|
|
||||||
|
if e[0][1:3] != 'fo':
|
||||||
|
DepName = QTableWidgetItem(e[0][1:3])
|
||||||
|
SchemaName = QTableWidgetItem(e[0][4:])
|
||||||
|
else:
|
||||||
|
DepName = QTableWidgetItem('form')
|
||||||
|
SchemaName = QTableWidgetItem(e[0][6:])
|
||||||
|
TableName = QTableWidgetItem(e[1][len(e[0])+1:])
|
||||||
|
self.tableWidget.insertRow(row_count)
|
||||||
|
self.tableWidget.setItem(row_count,0,DepName)
|
||||||
|
self.tableWidget.setItem(row_count,1,SchemaName)
|
||||||
|
self.tableWidget.setItem(row_count,2,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
|
||||||
|
if self.lineEdit.text() != 'Recherche par mots-clés':
|
||||||
|
self.filtre_dynamique(self.lineEdit.text())
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
def popup(self):
|
def popup(self):
|
||||||
|
|
||||||
self.dialog = Popup() # +++ - self
|
self.dialog = Popup() # +++ - self
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa_FLUX
|
name=CenRa_FLUX
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=Permet d'ouvrire une table dans la base PostGis
|
description=Permet d'ouvrire une table dans la base PostGis
|
||||||
version=2.2
|
version=3.2
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -32,7 +33,7 @@ icon=icon.png
|
|||||||
# experimental flag
|
# experimental flag
|
||||||
experimental=False
|
experimental=False
|
||||||
|
|
||||||
changelog=<h1>CenRA_FLUX:</h1></br><p><h3>07/01/2025 - Version 2.2: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
changelog=<h2>CenRa_FLUX:</h2></br><p><h3>22/07/2025 - Version 3.2: </h3> - Visualisation des format raster et vecteur dans REF.</p></br><p><h3>21/07/2025 - Version 3.1: </h3> - Bug fix pour l'ouverture de plus de 5 couches.</p></br><p><h3>19/05/2025 - Version 3.0: </h3> - Compatible PyQt5 et PyQt6.</p></br><p><h3>09/04/2025 - Version 2.9: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 2.8: </h3> - Optimisation pour le TT.</p></br><p><h3>07/04/2025 - Version 2.7: </h3> - mode debug.</p></br><p><h3>03/04/2025 - Version 2.6: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 2.5: </h3> - Visualisation distincte des couches ne se trouvant pas dans l'antenne.</p></br><p><h3>13/02/2025 - Version 2.4: </h3> - Ajoute redimensionnement et déplacement mollette.</p></br><p><h3>05/02/2025 - Version 2.3: </h3> - Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.</p></br><p><h3>07/01/2025 - Version 2.2: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||||
|
|
||||||
# deprecated flag (applies to the whole plugin, not just a single version)
|
# deprecated flag (applies to the whole plugin, not just a single version)
|
||||||
deprecated=False
|
deprecated=False
|
||||||
|
|||||||
@@ -1,185 +1,151 @@
|
|||||||
import sys
|
|
||||||
import socket
|
schemaname_distinct="""SELECT DISTINCT schemaname from pg_catalog.pg_tables
|
||||||
import os
|
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'
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
order by schemaname;"""
|
||||||
print(IPAddr)
|
schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
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'
|
||||||
host = "100.100.100.11"
|
order by schemaname,tablename;"""
|
||||||
port = "5432"
|
schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
||||||
dbname = "sig4269"
|
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)
|
||||||
sigdb="sig4269"
|
UNION
|
||||||
refdb="ref_geo4269"
|
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
||||||
password = "McVities"
|
geom = "geom"
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
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))"""
|
||||||
host = "192.168.0.201"
|
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))"""
|
||||||
port = "5432"
|
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))"""
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
||||||
refdb="ref_geo01"
|
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
||||||
password = "McVities"
|
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
host = "192.168.1.201"
|
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))"""
|
||||||
port = "5432"
|
|
||||||
dbname = "sig0726"
|
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))
|
||||||
sigdb="sig0726"
|
"""
|
||||||
refdb="ref_geo0726"
|
|
||||||
password = "McVities"
|
champ_vegethab_point = """(
|
||||||
if sys.platform == 'linux':
|
gid serial NOT NULL ,
|
||||||
os_user = os.environ['USER']
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
else:
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
os_user = os.environ['USERNAME']
|
occupati_1 bigint,
|
||||||
if os_user == 'STAGE':
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
os_user='stage'
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
if os_user == 'Administrateur':
|
occupati_2 bigint,
|
||||||
os_user = 'stage'
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
schemaname_distinct="""SELECT DISTINCT schemaname from pg_catalog.pg_tables
|
occupati_3 bigint,
|
||||||
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'
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
order by schemaname;"""
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
schemaname_list_ref="""SELECT schemaname,tablename from pg_catalog.pg_tables
|
surface_m2 numeric,
|
||||||
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'
|
surface_ha numeric,
|
||||||
order by schemaname,tablename;"""
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
schemaname_list="""(SELECT schemaname,tablename from pg_catalog.pg_tables
|
date_creat date,
|
||||||
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)
|
date_maj date,
|
||||||
UNION
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
(SELECT schemaname,matviewname AS tablename FROM pg_catalog.pg_matviews order by schemaname,tablename) order by schemaname,tablename;"""
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
geom = "geom"
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
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))
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_point = """(
|
date_sais date,
|
||||||
gid serial NOT NULL ,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(Point,2154)
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_2 bigint,
|
"""
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multilinestring = """(
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
occupati_3 bigint,
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
surface_m2 numeric,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
date_creat date,
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(Point,2154)
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multilinestring = """(
|
date_sais date,
|
||||||
gid serial NOT NULL ,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiLineString,2154)
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_2 bigint,
|
"""
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multipolygon = """(
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
gid serial NOT NULL ,
|
||||||
occupati_3 bigint,
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
occupati_1 bigint,
|
||||||
surface_m2 numeric,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
surface_ha numeric,
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
occupati_2 bigint,
|
||||||
date_creat date,
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_maj date,
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(MultiLineString,2154)
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multipolygon = """(
|
date_sais date,
|
||||||
gid serial NOT NULL ,
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiPolygon,2154)
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
)
|
||||||
occupati_2 bigint,
|
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(MultiPolygon,2154)
|
|
||||||
)
|
|
||||||
"""
|
"""
|
||||||
@@ -0,0 +1,230 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
id="svg5692"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.3.1 r9886"
|
||||||
|
sodipodi:docname="mActionAddRasterLayer.svg"
|
||||||
|
inkscape:export-filename="/home/denis/Desktop/oracle.png"
|
||||||
|
inkscape:export-xdpi="67.5"
|
||||||
|
inkscape:export-ydpi="67.5">
|
||||||
|
<title
|
||||||
|
id="title2829">GIS icon theme 0.2</title>
|
||||||
|
<defs
|
||||||
|
id="defs5694">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 16 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="32 : 16 : 1"
|
||||||
|
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||||
|
id="perspective3486" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3496"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3600"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective7871"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8710"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective9811"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4762"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="22.539029"
|
||||||
|
inkscape:cx="0.66325675"
|
||||||
|
inkscape:cy="15.235866"
|
||||||
|
inkscape:current-layer="layer2"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
borderlayer="false"
|
||||||
|
inkscape:window-width="1855"
|
||||||
|
inkscape:window-height="1056"
|
||||||
|
inkscape:window-x="65"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:snap-object-midpoints="false"
|
||||||
|
inkscape:snap-grids="true"
|
||||||
|
inkscape:object-paths="false">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid5700"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true"
|
||||||
|
dotted="true"
|
||||||
|
originx="2.5px"
|
||||||
|
originy="2.5px" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5697">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>GIS icon theme 0.2</dc:title>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Robert Szczepanek</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Robert Szczepanek</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>GIS icons</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:coverage>GIS icons</dc:coverage>
|
||||||
|
<dc:description>http://robert.szczepanek.pl/</dc:description>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Layer"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(0,-8)">
|
||||||
|
<rect
|
||||||
|
style="fill:#6e97c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="rect6419"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="7.9999986"
|
||||||
|
y="7.9999995" />
|
||||||
|
<rect
|
||||||
|
style="fill:#2b3b4d;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-6"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="16.000002"
|
||||||
|
y="7.9999995" />
|
||||||
|
<rect
|
||||||
|
style="fill:#2b3b4d;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-6-9"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="7.9999986"
|
||||||
|
y="16"
|
||||||
|
inkscape:transform-center-x="-3.9999992"
|
||||||
|
inkscape:transform-center-y="-5.3333316" />
|
||||||
|
<rect
|
||||||
|
style="fill:#6d97c4;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-0"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="16.000002"
|
||||||
|
y="16" />
|
||||||
|
<rect
|
||||||
|
style="fill:#2d3e4d;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-6-7"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="-4.7683716e-07"
|
||||||
|
y="7.9999995" />
|
||||||
|
<rect
|
||||||
|
style="fill:#6d97c4;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-3"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="-4.7683716e-07"
|
||||||
|
y="16" />
|
||||||
|
<rect
|
||||||
|
style="fill:#6d97c4;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-5"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="7.9999986"
|
||||||
|
y="24.000002" />
|
||||||
|
<rect
|
||||||
|
style="fill:#2b3b4d;fill-opacity:1;fill-rule:nonzero;stroke:none;display:inline"
|
||||||
|
id="rect6419-6-6"
|
||||||
|
width="7.999999"
|
||||||
|
height="7.999999"
|
||||||
|
x="-4.7683716e-07"
|
||||||
|
y="24.000002" />
|
||||||
|
<rect
|
||||||
|
style="fill:none;stroke:none"
|
||||||
|
id="rect6554"
|
||||||
|
width="23.999998"
|
||||||
|
height="23.999998"
|
||||||
|
x="-4.7683716e-07"
|
||||||
|
y="7.9999995" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.2 KiB |
@@ -0,0 +1,312 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
id="svg5692"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.3.1 r9886"
|
||||||
|
sodipodi:docname="mActionAddWfsLayer.svg"
|
||||||
|
inkscape:export-filename="/media/home1/robert/svn/graphics/trunk/toolbar-icons/32x32/layer-vector.png"
|
||||||
|
inkscape:export-xdpi="90"
|
||||||
|
inkscape:export-ydpi="90">
|
||||||
|
<title
|
||||||
|
id="title2829">GIS icon theme 0.2</title>
|
||||||
|
<defs
|
||||||
|
id="defs5694">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 16 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="32 : 16 : 1"
|
||||||
|
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||||
|
id="perspective3486" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3496"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3600"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective7871"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective8710"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective9811"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective4762"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective4762-4" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective9811-2" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective8710-0" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective7871-7" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective3600-9" />
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 0.5 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="1 : 0.5 : 1"
|
||||||
|
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
|
||||||
|
id="perspective3496-4" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3486-0"
|
||||||
|
inkscape:persp3d-origin="16 : 10.666667 : 1"
|
||||||
|
inkscape:vp_z="32 : 16 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 16 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
<inkscape:perspective
|
||||||
|
id="perspective3952"
|
||||||
|
inkscape:persp3d-origin="12 : 8 : 1"
|
||||||
|
inkscape:vp_z="24 : 12 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_x="0 : 12 : 1"
|
||||||
|
sodipodi:type="inkscape:persp3d" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="16"
|
||||||
|
inkscape:cx="-0.094554179"
|
||||||
|
inkscape:cy="17.125349"
|
||||||
|
inkscape:current-layer="layer2"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:grid-bbox="true"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
borderlayer="false"
|
||||||
|
inkscape:window-width="1855"
|
||||||
|
inkscape:window-height="1056"
|
||||||
|
inkscape:window-x="65"
|
||||||
|
inkscape:window-y="24"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:snap-global="true"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
inkscape:snap-object-midpoints="true"
|
||||||
|
inkscape:snap-grids="false"
|
||||||
|
inkscape:object-paths="false"
|
||||||
|
inkscape:snap-bbox="true"
|
||||||
|
inkscape:object-nodes="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid5700"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true"
|
||||||
|
dotted="true"
|
||||||
|
originx="2.5px"
|
||||||
|
originy="2.5px" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5697">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title>GIS icon theme 0.2</dc:title>
|
||||||
|
<dc:creator>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Robert Szczepanek</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:creator>
|
||||||
|
<dc:rights>
|
||||||
|
<cc:Agent>
|
||||||
|
<dc:title>Robert Szczepanek</dc:title>
|
||||||
|
</cc:Agent>
|
||||||
|
</dc:rights>
|
||||||
|
<dc:subject>
|
||||||
|
<rdf:Bag>
|
||||||
|
<rdf:li>GIS icons</rdf:li>
|
||||||
|
</rdf:Bag>
|
||||||
|
</dc:subject>
|
||||||
|
<dc:coverage>GIS icons</dc:coverage>
|
||||||
|
<dc:description>http://robert.szczepanek.pl/</dc:description>
|
||||||
|
<cc:license
|
||||||
|
rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
|
||||||
|
</cc:Work>
|
||||||
|
<cc:License
|
||||||
|
rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Notice" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#Attribution" />
|
||||||
|
<cc:permits
|
||||||
|
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||||
|
<cc:requires
|
||||||
|
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
|
||||||
|
</cc:License>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer2"
|
||||||
|
inkscape:label="Layer"
|
||||||
|
style="display:inline"
|
||||||
|
transform="translate(0,-8)">
|
||||||
|
<g
|
||||||
|
id="g3028"
|
||||||
|
transform="matrix(0.75161647,0,0,0.75161647,-0.02586348,9.4769448)">
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3775"
|
||||||
|
d="m 16.000001,1.0775438 c 9.467477,4.6992805 8.114981,22.3215822 0,25.8460432"
|
||||||
|
style="fill:none;stroke:#749fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3773"
|
||||||
|
d="m 1.1225356,14.000566 29.7549294,0"
|
||||||
|
style="fill:none;stroke:#749fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3773-1"
|
||||||
|
d="m 2.9484075,6.9340877 c 7.5739815,1.0094969 18.3939565,1.0094969 25.9679385,0"
|
||||||
|
style="fill:none;stroke:#749fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3773-4"
|
||||||
|
d="m 2.9484075,21.067042 c 7.5739815,-1.009496 18.3939565,-1.009496 25.9679385,0"
|
||||||
|
style="fill:none;stroke:#749fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cc"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path3777"
|
||||||
|
d="m 16.000001,1.0775438 c -8.1149812,3.5244605 -9.467478,21.1467632 0,25.8460432"
|
||||||
|
style="fill:none;stroke:#749fcf;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.2562074,0,0,1.0871977,22.465232,-1.0129089)"
|
||||||
|
d="m 6.9656949,13.809332 c 0,6.713955 -5.4228716,12.15669 -12.1123228,12.15669 -6.6894511,0 -12.1123231,-5.442735 -12.1123231,-12.15669 0,-6.7139549 5.422872,-12.1566907 12.1123231,-12.1566907 6.6894512,0 12.1123228,5.4427358 12.1123228,12.1566907 z"
|
||||||
|
sodipodi:ry="12.156691"
|
||||||
|
sodipodi:rx="12.112323"
|
||||||
|
sodipodi:cy="13.809332"
|
||||||
|
sodipodi:cx="-5.1466279"
|
||||||
|
id="path3003"
|
||||||
|
style="fill:none;stroke:#5488c4;stroke-width:1.28353083;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
sodipodi:nodetypes="cccc"
|
||||||
|
id="path2960"
|
||||||
|
d="M 7.3400991,7.2779254 13.185401,22.026434 19.613856,7.4154701 24.89957,7.3945152"
|
||||||
|
style="color:#000000;fill:none;stroke:#172739;stroke-width:1.29794168;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
inkscape:connector-curvature="0" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.5475161,0,0,1.6212881,1.923793,-12.988176)"
|
||||||
|
d="m 4.5,12.5 c 0,0.552285 -0.4477153,1 -1,1 -0.5522847,0 -1,-0.447715 -1,-1 0,-0.552285 0.4477153,-1 1,-1 0.5522847,0 1,0.447715 1,1 z"
|
||||||
|
sodipodi:ry="1"
|
||||||
|
sodipodi:rx="1"
|
||||||
|
sodipodi:cy="12.5"
|
||||||
|
sodipodi:cx="3.5"
|
||||||
|
id="path2958"
|
||||||
|
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#172739;stroke-width:0.94698602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.5839392,0,0,1.6212881,7.641614,1.7603321)"
|
||||||
|
d="m 4.5,12.5 c 0,0.552285 -0.4477153,1 -1,1 -0.5522847,0 -1,-0.447715 -1,-1 0,-0.552285 0.4477153,-1 1,-1 0.5522847,0 1,0.447715 1,1 z"
|
||||||
|
sodipodi:ry="1"
|
||||||
|
sodipodi:rx="1"
|
||||||
|
sodipodi:cy="12.5"
|
||||||
|
sodipodi:cx="3.5"
|
||||||
|
id="path2958-0"
|
||||||
|
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#172739;stroke-width:0.93603462;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.5475161,0,0,1.6212881,14.034218,-12.884972)"
|
||||||
|
d="m 4.5,12.5 c 0,0.552285 -0.4477153,1 -1,1 -0.5522847,0 -1,-0.447715 -1,-1 0,-0.552285 0.4477153,-1 1,-1 0.5522847,0 1,0.447715 1,1 z"
|
||||||
|
sodipodi:ry="1"
|
||||||
|
sodipodi:rx="1"
|
||||||
|
sodipodi:cy="12.5"
|
||||||
|
sodipodi:cx="3.5"
|
||||||
|
id="path2958-9"
|
||||||
|
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#172739;stroke-width:0.94698602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
<path
|
||||||
|
transform="matrix(1.5475161,0,0,1.6212881,19.483264,-12.871586)"
|
||||||
|
d="m 4.5,12.5 c 0,0.552285 -0.4477153,1 -1,1 -0.5522847,0 -1,-0.447715 -1,-1 0,-0.552285 0.4477153,-1 1,-1 0.5522847,0 1,0.447715 1,1 z"
|
||||||
|
sodipodi:ry="1"
|
||||||
|
sodipodi:rx="1"
|
||||||
|
sodipodi:cy="12.5"
|
||||||
|
sodipodi:cx="3.5"
|
||||||
|
id="path2958-6"
|
||||||
|
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#172739;stroke-width:0.94698602;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
|
||||||
|
sodipodi:type="arc" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 13 KiB |
@@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
import shutil
|
import shutil
|
||||||
|
import os
|
||||||
import tempfile
|
import tempfile
|
||||||
import base64
|
|
||||||
import psycopg2
|
|
||||||
import psycopg2.extras
|
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -79,6 +77,14 @@ def plugin_test_data_path(*args, copy=False):
|
|||||||
else:
|
else:
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
def pyperclip():
|
||||||
|
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:
|
||||||
|
print('404')
|
||||||
|
|
||||||
def resources_path(*args):
|
def resources_path(*args):
|
||||||
"""Get the path to our resources folder.
|
"""Get the path to our resources folder.
|
||||||
@@ -106,25 +112,6 @@ 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 login_base(take=None):
|
|
||||||
from .tools.PythonSQL import host,port,dbname,password,os_user
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
|
||||||
res_ident = first_cur.fetchone()
|
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
|
||||||
user = res_ident[1]
|
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -157,7 +144,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>Dialog</class>
|
<class>Dialog</class>
|
||||||
<resources>
|
|
||||||
</resources>
|
|
||||||
<widget class="QDialog" name="Dialog">
|
<widget class="QDialog" name="Dialog">
|
||||||
<property name="enabled">
|
<property name="enabled">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -65,8 +63,8 @@
|
|||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="label_3">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>350</x>
|
<x>345</x>
|
||||||
<y>20</y>
|
<y>10</y>
|
||||||
<width>221</width>
|
<width>221</width>
|
||||||
<height>71</height>
|
<height>71</height>
|
||||||
</rect>
|
</rect>
|
||||||
@@ -75,7 +73,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="pixmap">
|
<property name="pixmap">
|
||||||
<pixmap resource="resources.qrc">:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
||||||
</property>
|
</property>
|
||||||
<property name="scaledContents">
|
<property name="scaledContents">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -139,7 +137,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="resources.qrc">
|
<iconset>
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@@ -162,7 +160,7 @@
|
|||||||
<string/>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="resources.qrc">
|
<iconset>
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
@@ -237,6 +235,18 @@
|
|||||||
<string>Flux sélectionné(s) à charger :</string>
|
<string>Flux sélectionné(s) à charger :</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<zorder>label_3</zorder>
|
||||||
|
<zorder>comboBox</zorder>
|
||||||
|
<zorder>comboBox_2</zorder>
|
||||||
|
<zorder>pushButton_2</zorder>
|
||||||
|
<zorder>tableWidget</zorder>
|
||||||
|
<zorder>tableWidget_2</zorder>
|
||||||
|
<zorder>commandLinkButton</zorder>
|
||||||
|
<zorder>commandLinkButton_2</zorder>
|
||||||
|
<zorder>lineEdit</zorder>
|
||||||
|
<zorder>label</zorder>
|
||||||
|
<zorder>label_2</zorder>
|
||||||
</widget>
|
</widget>
|
||||||
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -9,243 +9,387 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>910</width>
|
<width>890</width>
|
||||||
<height>800</height>
|
<height>810</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>910</width>
|
<width>600</width>
|
||||||
<height>800</height>
|
<height>400</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>910</width>
|
<width>890</width>
|
||||||
<height>800</height>
|
<height>810</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>SIG CEN-RA</string>
|
<string>SIG CEN-RA</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QComboBox" name="comboBox">
|
<property name="sizeGripEnabled">
|
||||||
<property name="geometry">
|
<bool>false</bool>
|
||||||
<rect>
|
</property>
|
||||||
<x>260</x>
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<y>130</y>
|
<property name="sizeConstraint">
|
||||||
<width>171</width>
|
<enum>QLayout::SetMaximumSize</enum>
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="editable">
|
<property name="leftMargin">
|
||||||
<bool>false</bool>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentText">
|
<property name="topMargin">
|
||||||
<string notr="true"/>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<property name="rightMargin">
|
||||||
<widget class="QComboBox" name="comboBox_2">
|
<number>0</number>
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>370</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>171</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="editable">
|
<property name="bottomMargin">
|
||||||
<bool>false</bool>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentText">
|
<property name="spacing">
|
||||||
<string notr="true"/>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
<property name="geometry">
|
<property name="maximumSize">
|
||||||
<rect>
|
<size>
|
||||||
<x>345</x>
|
<width>890</width>
|
||||||
<y>10</y>
|
<height>810</height>
|
||||||
<width>221</width>
|
</size>
|
||||||
<height>71</height>
|
</property>
|
||||||
</rect>
|
<property name="inputMethodHints">
|
||||||
</property>
|
<set>Qt::ImhNoEditMenu|Qt::ImhNoTextHandles</set>
|
||||||
<property name="text">
|
</property>
|
||||||
<string/>
|
<property name="frameShape">
|
||||||
</property>
|
<enum>QFrame::NoFrame</enum>
|
||||||
<property name="pixmap">
|
</property>
|
||||||
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
<property name="frameShadow">
|
||||||
</property>
|
<enum>QFrame::Sunken</enum>
|
||||||
<property name="scaledContents">
|
</property>
|
||||||
<bool>true</bool>
|
<property name="lineWidth">
|
||||||
</property>
|
<number>0</number>
|
||||||
</widget>
|
</property>
|
||||||
<widget class="QPushButton" name="pushButton_2">
|
<property name="midLineWidth">
|
||||||
<property name="geometry">
|
<number>0</number>
|
||||||
<rect>
|
</property>
|
||||||
<x>370</x>
|
<property name="verticalScrollBarPolicy">
|
||||||
<y>750</y>
|
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||||
<width>171</width>
|
</property>
|
||||||
<height>23</height>
|
<property name="horizontalScrollBarPolicy">
|
||||||
</rect>
|
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<widget class="QWidget" name="scrollAreaWidgetContents_2">
|
||||||
<string>Charger les couches</string>
|
<property name="geometry">
|
||||||
</property>
|
<rect>
|
||||||
</widget>
|
<x>0</x>
|
||||||
<widget class="QTableWidget" name="tableWidget">
|
<y>0</y>
|
||||||
<property name="enabled">
|
<width>890</width>
|
||||||
<bool>true</bool>
|
<height>810</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="geometry">
|
</property>
|
||||||
<rect>
|
<property name="maximumSize">
|
||||||
<x>30</x>
|
<size>
|
||||||
<y>170</y>
|
<width>890</width>
|
||||||
<width>850</width>
|
<height>810</height>
|
||||||
<height>281</height>
|
</size>
|
||||||
</rect>
|
</property>
|
||||||
</property>
|
<widget class="QCommandLinkButton" name="commandLinkButton_2">
|
||||||
<property name="selectionMode">
|
<property name="geometry">
|
||||||
<enum>QAbstractItemView::SingleSelection</enum>
|
<rect>
|
||||||
</property>
|
<x>450</x>
|
||||||
<property name="sortingEnabled">
|
<y>470</y>
|
||||||
<bool>true</bool>
|
<width>61</width>
|
||||||
</property>
|
<height>61</height>
|
||||||
</widget>
|
</rect>
|
||||||
<widget class="QTableWidget" name="tableWidget_2">
|
</property>
|
||||||
<property name="geometry">
|
<property name="text">
|
||||||
<rect>
|
<string/>
|
||||||
<x>30</x>
|
</property>
|
||||||
<y>550</y>
|
<property name="icon">
|
||||||
<width>850</width>
|
<iconset>
|
||||||
<height>181</height>
|
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
||||||
</rect>
|
</property>
|
||||||
</property>
|
<property name="iconSize">
|
||||||
<property name="selectionMode">
|
<size>
|
||||||
<enum>QAbstractItemView::SingleSelection</enum>
|
<width>50</width>
|
||||||
</property>
|
<height>40</height>
|
||||||
</widget>
|
</size>
|
||||||
<widget class="QCommandLinkButton" name="commandLinkButton">
|
</property>
|
||||||
<property name="geometry">
|
</widget>
|
||||||
<rect>
|
<widget class="QPushButton" name="pushButton_2">
|
||||||
<x>400</x>
|
<property name="geometry">
|
||||||
<y>470</y>
|
<rect>
|
||||||
<width>61</width>
|
<x>360</x>
|
||||||
<height>61</height>
|
<y>750</y>
|
||||||
</rect>
|
<width>171</width>
|
||||||
</property>
|
<height>23</height>
|
||||||
<property name="text">
|
</rect>
|
||||||
<string/>
|
</property>
|
||||||
</property>
|
<property name="text">
|
||||||
<property name="icon">
|
<string>Charger les couches</string>
|
||||||
<iconset>
|
</property>
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
</widget>
|
||||||
</property>
|
<widget class="QLabel" name="label">
|
||||||
<property name="iconSize">
|
<property name="geometry">
|
||||||
<size>
|
<rect>
|
||||||
<width>50</width>
|
<x>30</x>
|
||||||
<height>40</height>
|
<y>150</y>
|
||||||
</size>
|
<width>161</width>
|
||||||
</property>
|
<height>16</height>
|
||||||
</widget>
|
</rect>
|
||||||
<widget class="QCommandLinkButton" name="commandLinkButton_2">
|
</property>
|
||||||
<property name="geometry">
|
<property name="font">
|
||||||
<rect>
|
<font>
|
||||||
<x>460</x>
|
<family>Calibri</family>
|
||||||
<y>470</y>
|
<pointsize>10</pointsize>
|
||||||
<width>61</width>
|
<italic>false</italic>
|
||||||
<height>61</height>
|
</font>
|
||||||
</rect>
|
</property>
|
||||||
</property>
|
<property name="text">
|
||||||
<property name="text">
|
<string>Liste des flux disponibles :</string>
|
||||||
<string/>
|
</property>
|
||||||
</property>
|
</widget>
|
||||||
<property name="icon">
|
<widget class="QTableWidget" name="tableWidget_2">
|
||||||
<iconset>
|
<property name="geometry">
|
||||||
<normaloff>:/plugins/CenRa_FLUX/arrow-up.png</normaloff>:/plugins/CenRa_FLUX/arrow-up.png</iconset>
|
<rect>
|
||||||
</property>
|
<x>20</x>
|
||||||
<property name="iconSize">
|
<y>550</y>
|
||||||
<size>
|
<width>851</width>
|
||||||
<width>50</width>
|
<height>181</height>
|
||||||
<height>40</height>
|
</rect>
|
||||||
</size>
|
</property>
|
||||||
</property>
|
<property name="inputMethodHints">
|
||||||
</widget>
|
<set>Qt::ImhNoEditMenu|Qt::ImhNoTextHandles</set>
|
||||||
<widget class="QLineEdit" name="lineEdit">
|
</property>
|
||||||
<property name="enabled">
|
<property name="selectionMode">
|
||||||
<bool>true</bool>
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="geometry">
|
<property name="selectionBehavior">
|
||||||
<rect>
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
<x>480</x>
|
</property>
|
||||||
<y>130</y>
|
</widget>
|
||||||
<width>171</width>
|
<widget class="QComboBox" name="comboBox">
|
||||||
<height>21</height>
|
<property name="geometry">
|
||||||
</rect>
|
<rect>
|
||||||
</property>
|
<x>250</x>
|
||||||
<property name="text">
|
<y>130</y>
|
||||||
<string>Recherche par mots-clés</string>
|
<width>171</width>
|
||||||
</property>
|
<height>22</height>
|
||||||
<property name="alignment">
|
</rect>
|
||||||
<set>Qt::AlignCenter</set>
|
</property>
|
||||||
</property>
|
<property name="editable">
|
||||||
<property name="readOnly">
|
<bool>false</bool>
|
||||||
<bool>false</bool>
|
</property>
|
||||||
</property>
|
<property name="currentText">
|
||||||
<property name="clearButtonEnabled">
|
<string notr="true"/>
|
||||||
<bool>true</bool>
|
</property>
|
||||||
</property>
|
</widget>
|
||||||
</widget>
|
<widget class="QLineEdit" name="lineEdit">
|
||||||
<widget class="QLabel" name="label">
|
<property name="enabled">
|
||||||
<property name="geometry">
|
<bool>true</bool>
|
||||||
<rect>
|
</property>
|
||||||
<x>40</x>
|
<property name="geometry">
|
||||||
<y>150</y>
|
<rect>
|
||||||
<width>161</width>
|
<x>470</x>
|
||||||
<height>16</height>
|
<y>130</y>
|
||||||
</rect>
|
<width>171</width>
|
||||||
</property>
|
<height>21</height>
|
||||||
<property name="font">
|
</rect>
|
||||||
<font>
|
</property>
|
||||||
<family>Calibri</family>
|
<property name="text">
|
||||||
<pointsize>10</pointsize>
|
<string>Recherche par mots-clés</string>
|
||||||
<italic>false</italic>
|
</property>
|
||||||
</font>
|
<property name="alignment">
|
||||||
</property>
|
<set>Qt::AlignCenter</set>
|
||||||
<property name="text">
|
</property>
|
||||||
<string>Liste des flux disponibles :</string>
|
<property name="readOnly">
|
||||||
</property>
|
<bool>false</bool>
|
||||||
</widget>
|
</property>
|
||||||
<widget class="QLabel" name="label_2">
|
<property name="clearButtonEnabled">
|
||||||
<property name="geometry">
|
<bool>true</bool>
|
||||||
<rect>
|
</property>
|
||||||
<x>30</x>
|
</widget>
|
||||||
<y>530</y>
|
<widget class="QToolButton" name="toolButton">
|
||||||
<width>171</width>
|
<property name="geometry">
|
||||||
<height>16</height>
|
<rect>
|
||||||
</rect>
|
<x>660</x>
|
||||||
</property>
|
<y>130</y>
|
||||||
<property name="font">
|
<width>21</width>
|
||||||
<font>
|
<height>21</height>
|
||||||
<family>Calibri</family>
|
</rect>
|
||||||
<pointsize>10</pointsize>
|
</property>
|
||||||
<italic>false</italic>
|
<property name="text">
|
||||||
</font>
|
<string/>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
</widget>
|
||||||
<string>Flux sélectionné(s) à charger :</string>
|
<widget class="QTableWidget" name="tableWidget">
|
||||||
</property>
|
<property name="enabled">
|
||||||
</widget>
|
<bool>true</bool>
|
||||||
<zorder>label_3</zorder>
|
</property>
|
||||||
<zorder>comboBox</zorder>
|
<property name="geometry">
|
||||||
<zorder>comboBox_2</zorder>
|
<rect>
|
||||||
<zorder>pushButton_2</zorder>
|
<x>20</x>
|
||||||
<zorder>tableWidget</zorder>
|
<y>170</y>
|
||||||
<zorder>tableWidget_2</zorder>
|
<width>850</width>
|
||||||
<zorder>commandLinkButton</zorder>
|
<height>281</height>
|
||||||
<zorder>commandLinkButton_2</zorder>
|
</rect>
|
||||||
<zorder>lineEdit</zorder>
|
</property>
|
||||||
<zorder>label</zorder>
|
<property name="sizePolicy">
|
||||||
<zorder>label_2</zorder>
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editTriggers">
|
||||||
|
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked</set>
|
||||||
|
</property>
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::SingleSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sortingEnabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>530</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>Calibri</family>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
<italic>false</italic>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Flux sélectionné(s) à charger :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>335</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>71</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap>:/plugins/CenRa_FLUX/logo.jpg</pixmap>
|
||||||
|
</property>
|
||||||
|
<property name="scaledContents">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="comboBox_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>360</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Ignored" vsizetype="Ignored">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="currentText">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCommandLinkButton" name="commandLinkButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>390</x>
|
||||||
|
<y>470</y>
|
||||||
|
<width>61</width>
|
||||||
|
<height>61</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</normaloff>:/plugins/CenRa_FLUX/arrow-bottom.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>50</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="checkBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>830</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>70</width>
|
||||||
|
<height>17</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="DeBUG">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>71</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Ignored" vsizetype="Ignored">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="editable">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="currentText">
|
||||||
|
<string notr="true"/>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTextBrowser" name="viewer">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>90</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>731</width>
|
||||||
|
<height>731</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgba(255, 255, 255,0.50);</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
|
|||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
@@ -26,15 +26,18 @@ from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
|
|||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
|
pyperclip,
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
|
pyperclip()
|
||||||
from .dock import CenRa_Metabase
|
from .dock import CenRa_Metabase
|
||||||
from .editor import Metabase_Editor
|
from .editor import Metabase_Editor
|
||||||
from .about_form import MetabaseAboutDialog
|
from .about_form import MetabaseAboutDialog
|
||||||
#from CenRa_Metabase.issues import CenRa_Issues
|
#from CenRa_Metabase.issues import CenRa_Issues
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
|
|
||||||
class PgMetadata:
|
class PgMetadata:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -104,7 +107,7 @@ class PgMetadata:
|
|||||||
|
|
||||||
if not self.dock:
|
if not self.dock:
|
||||||
self.dock = CenRa_Metabase()
|
self.dock = CenRa_Metabase()
|
||||||
iface.addDockWidget(Qt.RightDockWidgetArea, self.dock)
|
iface.addDockWidget(Qt.DockWidgetArea(0x2), self.dock)
|
||||||
|
|
||||||
# Open/close the dock from plugin menu
|
# Open/close the dock from plugin menu
|
||||||
self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
|
||||||
@@ -155,7 +158,7 @@ class PgMetadata:
|
|||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
dialog = MetabaseAboutDialog(iface)
|
dialog = MetabaseAboutDialog(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/'))
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ ABOUT_FORM_CLASS, _ = uic.loadUiType(
|
|||||||
os.path.join(
|
os.path.join(
|
||||||
str(Path(__file__).resolve().parent),
|
str(Path(__file__).resolve().parent),
|
||||||
'tools/ui',
|
'tools/ui',
|
||||||
'CenRa_Metabase_about_form.ui'
|
'CenRa_about_form.ui'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+12
-9
@@ -27,7 +27,7 @@ from qgis.core import (
|
|||||||
from qgis.PyQt.QtCore import QLocale, QUrl
|
from qgis.PyQt.QtCore import QLocale, QUrl
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
#from qgis.PyQt.QtWebKitWidgets import QWebPage
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
@@ -47,11 +47,14 @@ from pg_metadata.connection_manager import (
|
|||||||
settings_connections_names,
|
settings_connections_names,
|
||||||
)
|
)
|
||||||
'''
|
'''
|
||||||
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
DOCK_CLASS = load_ui('CenRa_Metabase_dockwidget_base.ui')
|
DOCK_CLASS = load_ui('CenRa_Metabase_dockwidget_base.ui')
|
||||||
@@ -81,8 +84,8 @@ class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
|||||||
self.current_datasource_uri = None
|
self.current_datasource_uri = None
|
||||||
self.current_connection = None
|
self.current_connection = None
|
||||||
|
|
||||||
self.viewer.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
#self.viewer.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
|
||||||
self.viewer.page().linkClicked.connect(self.open_link)
|
#self.viewer.page().linkClicked.connect(self.open_link)
|
||||||
|
|
||||||
# Help button
|
# Help button
|
||||||
self.external_help.setText('')
|
self.external_help.setText('')
|
||||||
@@ -98,7 +101,7 @@ class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
|||||||
# Settings menu
|
# Settings menu
|
||||||
self.config.setAutoRaise(True)
|
self.config.setAutoRaise(True)
|
||||||
#self.config.setToolTip(tr("Settings"))
|
#self.config.setToolTip(tr("Settings"))
|
||||||
self.config.setPopupMode(QToolButton.InstantPopup)
|
self.config.setPopupMode(QToolButton.ToolButtonPopupMode(2))
|
||||||
self.config.setIcon(QgsApplication.getThemeIcon("/mActionOptions.svg"))
|
self.config.setIcon(QgsApplication.getThemeIcon("/mActionOptions.svg"))
|
||||||
|
|
||||||
self.auto_open_dock_action = QAction(
|
self.auto_open_dock_action = QAction(
|
||||||
@@ -116,7 +119,7 @@ class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
|||||||
# Setting PDF/HTML menu
|
# Setting PDF/HTML menu
|
||||||
self.save_button.setAutoRaise(True)
|
self.save_button.setAutoRaise(True)
|
||||||
#self.save_button.setToolTip(tr("Save metadata"))
|
#self.save_button.setToolTip(tr("Save metadata"))
|
||||||
self.save_button.setPopupMode(QToolButton.InstantPopup)
|
self.save_button.setPopupMode(QToolButton.ToolButtonPopupMode(2))
|
||||||
self.save_button.setIcon(QIcon(QgsApplication.iconPath('mActionFileSave.svg')))
|
self.save_button.setIcon(QIcon(QgsApplication.iconPath('mActionFileSave.svg')))
|
||||||
|
|
||||||
self.save_as_pdf = QAction(
|
self.save_as_pdf = QAction(
|
||||||
@@ -188,8 +191,8 @@ class CenRa_Metabase(QDockWidget, DOCK_CLASS):
|
|||||||
|
|
||||||
if output_format == OutputFormats.PDF:
|
if output_format == OutputFormats.PDF:
|
||||||
printer = QPrinter()
|
printer = QPrinter()
|
||||||
printer.setOutputFormat(QPrinter.PdfFormat)
|
printer.setOutputFormat(QPrinter.OutputFormat(1))
|
||||||
printer.setPageMargins(20, 20, 20, 20, QPrinter.Millimeter)
|
#printer.setPageMargins(20,20,20,20,QPrinter.Unit(0))
|
||||||
printer.setOutputFileName(output_file_path)
|
printer.setOutputFileName(output_file_path)
|
||||||
self.viewer.print(printer)
|
self.viewer.print(printer)
|
||||||
iface.messageBar().pushSuccess(
|
iface.messageBar().pushSuccess(
|
||||||
@@ -354,7 +357,7 @@ publisher+
|
|||||||
|
|
||||||
# It must be a file, even if it does not exist on the file system.
|
# It must be a file, even if it does not exist on the file system.
|
||||||
base_url = QUrl.fromLocalFile(resources_path('images', 'must_be_a_file.png'))
|
base_url = QUrl.fromLocalFile(resources_path('images', 'must_be_a_file.png'))
|
||||||
self.viewer.setHtml(html, base_url)
|
self.viewer.setHtml(html)#, base_url)
|
||||||
|
|
||||||
def ce_trouve_dans_psql(self,layer):
|
def ce_trouve_dans_psql(self,layer):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -20,11 +20,11 @@ from qgis.core import (
|
|||||||
QgsGeometry,
|
QgsGeometry,
|
||||||
QgsWkbTypes,
|
QgsWkbTypes,
|
||||||
)
|
)
|
||||||
from PyQt5 import QtGui
|
from qgis.PyQt import QtGui
|
||||||
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime
|
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
#from qgis.PyQt.QtWebKitWidgets import QWebPage
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
@@ -38,10 +38,14 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
)
|
)
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
|
|
||||||
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa_Metabase
|
name=CenRa_Metabase
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=CenRa_METABASE
|
description=CenRa_METABASE
|
||||||
version=0.1.6
|
version=0.3.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
|
|||||||
|
|
||||||
hasProcessingProvider=no
|
hasProcessingProvider=no
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_Metabase:</h2></br><p><h3>07/01/2025 - Version 0.1.6: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>19/12/2024 - Version 0.1.5: </h3> - Fix les problem de lenteur qu'en la base est down.</p></br><p><h3>12/12/2024 - Version 0.1.4: </h3> - Crash Fix .</p></br><p><h3>08/10/2024 - Version 0.1.3: </h3> - Lecture de métadonnée des flux WMS/WFS.</p></br><p><h3>07/10/2024 - Version 0.1.2: </h3> - Correctif de bug.</p></br><p><h3>03/10/2024 - Version 0.1.1: </h3> - Remonte la fênetre dans la pille.</p></br><p><h3>26/08/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_Metabase </p></br>
|
changelog=<h2>CenRa_METABASE:</h2></br><p><h3>19/05/2025 - Version 0.3.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>09/04/2025 - Version 0.2.3: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 0.2.2: </h3> - Optimisation pour le TT.</p></br><p><h3>03/04/2025 - Version 0.2.1: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 0.2.0: </h3> - Deployment sur serveur SIG.</p></br><p><h3>07/01/2025 - Version 0.1.6: </h3> - ByPass du certif ssl ci erreur</p></br><p><h3>19/12/2024 - Version 0.1.5: </h3> - Fix les problem de lenteur qu'en la base est down.</p></br><p><h3>12/12/2024 - Version 0.1.4: </h3> - Crash Fix .</p></br><p><h3>08/10/2024 - Version 0.1.3: </h3> - Lecture de métadonnée des flux WMS/WFS.</p></br><p><h3>07/10/2024 - Version 0.1.2: </h3> - Correctif de bug.</p></br><p><h3>03/10/2024 - Version 0.1.1: </h3> - Remonte la fênetre dans la pille.</p></br><p><h3>26/08/2024 - Version 0.1.0: </h3> - Lancement du plugin CenRa_Metabase </p>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=python
|
tags=python
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
import sys
|
|
||||||
import socket
|
|
||||||
import os
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
#print(IPAddr)
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
host = "100.100.100.81"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig4269"
|
|
||||||
sigdb="sig4269"
|
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
|
||||||
refdb="ref_geo01"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
host = "192.168.1.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig0726"
|
|
||||||
sigdb="sig0726"
|
|
||||||
refdb="ref_geo0726"
|
|
||||||
password = "McVities"
|
|
||||||
if sys.platform == 'linux':
|
|
||||||
os_user = os.environ['USER']
|
|
||||||
else:
|
|
||||||
os_user = os.environ['USERNAME']
|
|
||||||
if os_user == 'STAGE':
|
|
||||||
os_user='stage'
|
|
||||||
if os_user == 'Administrateur':
|
|
||||||
os_user='stage'
|
|
||||||
Binary file not shown.
@@ -3,9 +3,7 @@
|
|||||||
import configparser
|
import configparser
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
import base64
|
import os
|
||||||
import psycopg2
|
|
||||||
import psycopg2.extras
|
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
from qgis.PyQt.QtWidgets import QApplication
|
from qgis.PyQt.QtWidgets import QApplication
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
@@ -94,6 +92,14 @@ def resources_path(*args):
|
|||||||
path = abspath(join(path, item))
|
path = abspath(join(path, item))
|
||||||
return path
|
return path
|
||||||
|
|
||||||
|
def pyperclip():
|
||||||
|
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:
|
||||||
|
print('404')
|
||||||
|
|
||||||
def load_ui(*args):
|
def load_ui(*args):
|
||||||
"""Get compile UI file.
|
"""Get compile UI file.
|
||||||
@@ -107,25 +113,6 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
|
||||||
from CenRa_METABASE.tools.PythonSQL import host,port,dbname,password,os_user
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
|
||||||
res_ident = first_cur.fetchone()
|
|
||||||
|
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
|
||||||
user = res_ident[1]
|
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -158,7 +145,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
@@ -64,24 +64,11 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer"/>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
+4
-19
@@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Metabase</string>
|
<string>Journal des modifications</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowIcon">
|
<property name="windowIcon">
|
||||||
<iconset>
|
<iconset>
|
||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
@@ -32,7 +32,8 @@ from .tools.resources import (
|
|||||||
from .canvas_editor import PageRender_Editor
|
from .canvas_editor import PageRender_Editor
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
|
|
||||||
class PgPageRender:
|
class PgPageRender:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -115,7 +116,7 @@ class PgPageRender:
|
|||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
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/'))
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
from PyQt5.QtCore import QSettings,QPointF
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from functools import partial
|
from functools import partial
|
||||||
@@ -44,7 +43,7 @@ from qgis.core import (
|
|||||||
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime, Qt
|
||||||
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
from qgis.PyQt.QtGui import QDesktopServices, QIcon, QColor, QFont, QMovie
|
||||||
from qgis.PyQt.QtPrintSupport import QPrinter
|
from qgis.PyQt.QtPrintSupport import QPrinter
|
||||||
from qgis.PyQt.QtWebKitWidgets import QWebPage
|
#from qgis.PyQt.QtWebKitWidgets import QWebPage
|
||||||
from qgis.PyQt.QtWidgets import (
|
from qgis.PyQt.QtWidgets import (
|
||||||
QDialog,
|
QDialog,
|
||||||
QAction,
|
QAction,
|
||||||
@@ -57,15 +56,17 @@ from qgis.PyQt.QtWidgets import (
|
|||||||
QTableWidgetItem,
|
QTableWidgetItem,
|
||||||
QVBoxLayout,
|
QVBoxLayout,
|
||||||
)
|
)
|
||||||
from PyQt5 import QtGui
|
|
||||||
from PyQt5.QtWidgets import QApplication
|
from qgis.PyQt import QtGui
|
||||||
|
from qgis.PyQt.QtWidgets import QApplication
|
||||||
|
from qgis.PyQt.QtCore import QSettings,QPointF
|
||||||
|
|
||||||
from qgis.PyQt.QtXml import QDomDocument
|
from qgis.PyQt.QtXml import QDomDocument
|
||||||
from qgis.utils import iface
|
from qgis.utils import iface
|
||||||
import glob
|
import glob
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
)
|
)
|
||||||
from .issues import CenRa_Issues
|
from .issues import CenRa_Issues
|
||||||
@@ -159,7 +160,7 @@ class PageRender_Editor(QDialog, EDITOR_CLASS):
|
|||||||
self.verticalScrollBar.setValue(self.frame.y())
|
self.verticalScrollBar.setValue(self.frame.y())
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
if self.tableWidget.currentItem() != None:
|
if self.tableWidget.currentItem() != None:
|
||||||
QApplication.setOverrideCursor(Qt.OpenHandCursor)
|
QApplication.setOverrideCursor(Qt.CursorShape(18))
|
||||||
global lastPos
|
global lastPos
|
||||||
lastPos = {'x':event.pos().x(),'y':event.pos().y()}
|
lastPos = {'x':event.pos().x(),'y':event.pos().y()}
|
||||||
|
|
||||||
@@ -168,13 +169,13 @@ class PageRender_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
#if event.modifiers() & Qt.ControlModifier:
|
#if event.modifiers() & Qt.ControlModifier:
|
||||||
if event.key() == Qt.Key_Up:
|
if event.key() == Qt.Key(0x01000015):
|
||||||
self.verticalSlider.setValue(self.spinBox_2.value()+1)
|
self.verticalSlider.setValue(self.spinBox_2.value()+1)
|
||||||
if event.key() == Qt.Key_Down:
|
if event.key() == Qt.Key(0x01000013):
|
||||||
self.verticalSlider.setValue(self.spinBox_2.value()-1)
|
self.verticalSlider.setValue(self.spinBox_2.value()-1)
|
||||||
if event.key() == Qt.Key_Right:
|
if event.key() == Qt.Key(0x01000014):
|
||||||
self.horizontalSlider.setValue(self.spinBox.value()+1)
|
self.horizontalSlider.setValue(self.spinBox.value()+1)
|
||||||
if event.key() == Qt.Key_Left:
|
if event.key() == Qt.Key(0x01000012):
|
||||||
self.horizontalSlider.setValue(self.spinBox.value()-1)
|
self.horizontalSlider.setValue(self.spinBox.value()-1)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa_PageRender
|
name=CenRa_PageRender
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=CenRa_PageRender
|
description=CenRa_PageRender
|
||||||
version=0.1.5
|
version=0.2.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
|
|||||||
|
|
||||||
hasProcessingProvider=no
|
hasProcessingProvider=no
|
||||||
# Uncomment the following line and add your changelog:
|
# Uncomment the following line and add your changelog:
|
||||||
changelog=<h2>CenRa_PageRender:</h2></br><p><h3>07/01/2025 - Version 0.1.5: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>14/11/2024 - Version 0.1.4: </h3> - Implementation de la mollet. </br> - Implementation du dragging pour déplacer et modification de la taille </br></p></br><p><h3>08/11/2024 - Version 0.1.3: </h3> - Correctif de bug. </br><p><h3>21/10/2024 - Version 0.1.1: </h3> - Les match en if. </br> - Bouton de scroll et adaptation portrait.</p></br><p><h3>09/10/2024 - Version 0.1.0: </h3> - Création.</p>
|
changelog=<h2>CenRa_PAGERENDER:</h2></br><p><h3>19/05/2025 - Version 0.2.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>03/04/2025 - Version 0.1.6: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 0.1.5: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>14/11/2024 - Version 0.1.4: </h3> - Implementation de la mollet. </br> - Implementation du dragging pour déplacer et modification de la taille </br></p></br><p><h3>08/11/2024 - Version 0.1.3: </h3> - Correctif de bug. </br><p><h3>21/10/2024 - Version 0.1.1: </h3> - Les match en if. </br> - Bouton de scroll et adaptation portrait.</p></br><p><h3>09/10/2024 - Version 0.1.0: </h3> - Création.</p>
|
||||||
|
|
||||||
# Tags are comma separated with spaces allowed
|
# Tags are comma separated with spaces allowed
|
||||||
tags=python
|
tags=python
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
import sys
|
|
||||||
import socket
|
|
||||||
import os
|
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
|
||||||
#print(IPAddr)
|
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
|
||||||
host = "100.100.100.81"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig4269"
|
|
||||||
sigdb="sig4269"
|
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
|
||||||
refdb="ref_geo01"
|
|
||||||
password = "McVities"
|
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
|
||||||
host = "192.168.1.201"
|
|
||||||
port = "5432"
|
|
||||||
dbname = "sig0726"
|
|
||||||
sigdb="sig0726"
|
|
||||||
refdb="ref_geo0726"
|
|
||||||
password = "McVities"
|
|
||||||
if sys.platform == 'linux':
|
|
||||||
os_user = os.environ['USER']
|
|
||||||
else:
|
|
||||||
os_user = os.environ['USERNAME']
|
|
||||||
if os_user == 'STAGE':
|
|
||||||
os_user='stage'
|
|
||||||
if os_user == 'Administrateur':
|
|
||||||
os_user='stage'
|
|
||||||
Binary file not shown.
@@ -107,25 +107,6 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
|
||||||
from CenRa_METABASE.tools.PythonSQL import host,port,dbname,password,os_user
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
|
||||||
res_ident = first_cur.fetchone()
|
|
||||||
|
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
|
||||||
user = res_ident[1]
|
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -158,7 +139,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -13,23 +13,32 @@ import qgis
|
|||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
|
import socket
|
||||||
import os
|
import os
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
plugin_path,
|
plugin_path,
|
||||||
|
pyperclip,
|
||||||
resources_path,
|
resources_path,
|
||||||
maj_verif,
|
maj_verif,
|
||||||
)
|
)
|
||||||
|
pyperclip()
|
||||||
|
|
||||||
from .postgis_editor import Postgis_Editor
|
from .postgis_editor import Postgis_Editor
|
||||||
from .postgis_creator import Postgis_Creator
|
from .postgis_creator import Postgis_Creator
|
||||||
|
from .postgis_rename import Postgis_Rename
|
||||||
from .about_form import AboutDialog
|
from .about_form import AboutDialog
|
||||||
|
|
||||||
from PyQt5.QtCore import *
|
from qgis.PyQt.QtCore import *
|
||||||
|
|
||||||
|
|
||||||
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
|
|
||||||
class PgPostgis:
|
class PgPostgis:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
""" Constructor. """
|
""" Constructor. """
|
||||||
self.action_editor = None
|
self.action_editor = None
|
||||||
self.action_creator = None
|
self.action_creator = None
|
||||||
|
self.action_rename = None
|
||||||
# self.issues = None
|
# self.issues = None
|
||||||
self.provider = None
|
self.provider = None
|
||||||
self.locator_filter = None
|
self.locator_filter = None
|
||||||
@@ -58,6 +67,7 @@ class PgPostgis:
|
|||||||
|
|
||||||
icon = QIcon(resources_path('icons', 'page_new.png'))
|
icon = QIcon(resources_path('icons', 'page_new.png'))
|
||||||
icon2 = QIcon(resources_path('icons', 'page_ajout.png'))
|
icon2 = QIcon(resources_path('icons', 'page_ajout.png'))
|
||||||
|
icon3 = QIcon(resources_path('icons', 'page_rename.png'))
|
||||||
|
|
||||||
# Open the online help
|
# Open the online help
|
||||||
self.help_action = QAction(icon, "CenRa_Postgis", iface.mainWindow())
|
self.help_action = QAction(icon, "CenRa_Postgis", iface.mainWindow())
|
||||||
@@ -69,6 +79,11 @@ class PgPostgis:
|
|||||||
self.postgis_creator = QAction(icon, 'dossier_creator',None)
|
self.postgis_creator = QAction(icon, 'dossier_creator',None)
|
||||||
self.toolBar.addAction(self.postgis_creator)
|
self.toolBar.addAction(self.postgis_creator)
|
||||||
self.postgis_creator.triggered.connect(self.open_creator)
|
self.postgis_creator.triggered.connect(self.open_creator)
|
||||||
|
|
||||||
|
self.postgis_creator.setEnabled(False)
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.postgis_creator.setEnabled(True)
|
||||||
|
|
||||||
if not self.action_editor:
|
if not self.action_editor:
|
||||||
self.action_editor = Postgis_Editor()
|
self.action_editor = Postgis_Editor()
|
||||||
|
|
||||||
@@ -76,12 +91,36 @@ class PgPostgis:
|
|||||||
self.toolBar.addAction(self.postgis_editor)
|
self.toolBar.addAction(self.postgis_editor)
|
||||||
self.postgis_editor.triggered.connect(self.open_editor)
|
self.postgis_editor.triggered.connect(self.open_editor)
|
||||||
|
|
||||||
|
self.postgis_editor.setEnabled(False)
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.postgis_editor.setEnabled(True)
|
||||||
|
|
||||||
|
if not self.action_rename:
|
||||||
|
self.action_rename = Postgis_Rename()
|
||||||
|
|
||||||
|
self.postgis_rename = QAction(icon3, 'dossier_rename',None)
|
||||||
|
self.toolBar.addAction(self.postgis_rename)
|
||||||
|
self.postgis_rename.triggered.connect(self.open_rename)
|
||||||
|
|
||||||
|
if os.environ['USERNAME'] == 'tlaveille' or os.environ['USERNAME'] == 'lpoulin' or os.environ['USERNAME'] == 'rclement':
|
||||||
|
self.action_rename.setEnabled(True)
|
||||||
|
self.postgis_rename.setEnabled(True)
|
||||||
|
self.postgis_rename.setVisible(1)
|
||||||
|
else:
|
||||||
|
self.action_rename.setEnabled(False)
|
||||||
|
self.postgis_rename.setEnabled(False)
|
||||||
|
self.postgis_rename.setVisible(0)
|
||||||
|
|
||||||
|
self.postgis_rename.setEnabled(False)
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.postgis_rename.setEnabled(True)
|
||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
"""
|
"""
|
||||||
About dialog
|
About dialog
|
||||||
"""
|
"""
|
||||||
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/'))
|
||||||
@@ -94,12 +133,18 @@ class PgPostgis:
|
|||||||
self.action_creator.show()
|
self.action_creator.show()
|
||||||
self.action_creator.raise_()
|
self.action_creator.raise_()
|
||||||
|
|
||||||
|
def open_rename(self):
|
||||||
|
self.action_rename.show()
|
||||||
|
self.action_rename.raise_()
|
||||||
|
|
||||||
def unload(self):
|
def unload(self):
|
||||||
""" Unload the plugin. """
|
""" Unload the plugin. """
|
||||||
if self.action_editor:
|
if self.action_editor:
|
||||||
iface.removePluginMenu('CenRa_Postgis',self.postgis_editor)
|
iface.removePluginMenu('CenRa_Postgis',self.postgis_editor)
|
||||||
if self.action_creator:
|
if self.action_creator:
|
||||||
iface.removePluginMenu('CenRa_Postgis',self.postgis_creator)
|
iface.removePluginMenu('CenRa_Postgis',self.postgis_creator)
|
||||||
|
if self.action_rename:
|
||||||
|
iface.removePluginMenu('CenRa_Postgis',self.postgis_rename)
|
||||||
|
|
||||||
if self.provider:
|
if self.provider:
|
||||||
QgsApplication.processingRegistry().removeProvider(self.provider)
|
QgsApplication.processingRegistry().removeProvider(self.provider)
|
||||||
|
|||||||
@@ -11,8 +11,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa_POSTGIS
|
name=CenRa_POSTGIS
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=Permet de crée un dossier dans la base PostGis
|
description=Permet de crée un dossier dans la base PostGis
|
||||||
version=2.4
|
version=3.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ email=si_besoin@cen-rhonealpes.fr
|
|||||||
# Optional items:
|
# Optional items:
|
||||||
|
|
||||||
# Uncomment the following line and add your changelog entries:
|
# Uncomment the following line and add your changelog entries:
|
||||||
changelog=<h2>CenRa_POSTGIS:</h2></br><p><h3>23/01/2025 - Version 2.4: </h3> - Correctif sur les pkey.</p></br><p><h3>22/01/2025 - Version 2.3: </h3> - Correctif sur la creation de projet.</p></br><p><h3>21/01/2025 - Version 2.2: </h3> - Correctif sur la longeur des nom.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.0:</h3>- Refont du code.</p>
|
changelog=<h2>CenRa_POSTGIS:</h2></br><p><h3>19/05/2025 - Version 3.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>09/04/2025 - Version 2.9: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 2.8: </h3> - Optimisation pour le TT.</p></br><p><h3>03/04/2025 - Version 2.7: </h3> - Mise a jour de securite.</p></br><p><h3>12/02/2025 - Version 2.6: </h3> - InDev:renomé les schema et table.</p></br><p><h3>04/02/2025 - Version 2.5: </h3> - Correctif bug création de couche.</p></br><p><h3>23/01/2025 - Version 2.4: </h3> - Correctif sur les pkey.</p></br><p><h3>22/01/2025 - Version 2.3: </h3> - Correctif sur la creation de projet.</p></br><p><h3>21/01/2025 - Version 2.2: </h3> - Correctif sur la longeur des nom.</p></br><p><h3>07/01/2025 - Version 2.1: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.0:</h3>- Refont du code.</p>
|
||||||
|
|
||||||
# tags are comma separated with spaces allowed
|
# tags are comma separated with spaces allowed
|
||||||
tags=cenra, postgis, database
|
tags=cenra, postgis, database
|
||||||
|
|||||||
@@ -9,17 +9,24 @@ import qgis
|
|||||||
from qgis.PyQt.QtCore import QSettings
|
from qgis.PyQt.QtCore import QSettings
|
||||||
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog,QMessageBox
|
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog,QMessageBox
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from PyQt5.QtCore import *
|
|
||||||
from PyQt5.QtGui import *
|
from qgis.PyQt.QtCore import *
|
||||||
from PyQt5 import QtGui
|
from qgis.PyQt.QtGui import *
|
||||||
|
from qgis.PyQt import QtGui
|
||||||
|
|
||||||
from qgis.core import *
|
from qgis.core import *
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
|
|
||||||
from .tools.PythonSQL import *
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
|
||||||
|
from .tools.SQLRequet import *
|
||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
create_vierge,
|
create_vierge,
|
||||||
create_contour,
|
create_contour,
|
||||||
@@ -50,10 +57,11 @@ class Postgis_Creator(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
# run method that performs all the real work
|
# run method that performs all the real work
|
||||||
def raise_(self):
|
def raise_(self):
|
||||||
|
self.activateWindow()
|
||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.exec_()
|
result = self.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result == 1:
|
if result == 1:
|
||||||
|
|
||||||
@@ -74,15 +82,14 @@ class Postgis_Creator(QDialog, EDITOR_CLASS):
|
|||||||
if self.nom.text().find(car) != -1 :
|
if self.nom.text().find(car) != -1 :
|
||||||
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.nom.text().lower() )
|
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.nom.text().lower() )
|
||||||
return
|
return
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
SQL_schema = "CREATE SCHEMA " + schema + ";"
|
SQL_schema = "CREATE SCHEMA " + schema + ";"
|
||||||
SQL_GRANT_SCHEMA="GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_qgis; GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_sig;"
|
SQL_GRANT_SCHEMA="GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_qgis; GRANT CREATE, USAGE ON SCHEMA "+schema+" TO grp_sig;"
|
||||||
|
|||||||
@@ -9,17 +9,23 @@ import qgis
|
|||||||
from qgis.PyQt.QtCore import QSettings
|
from qgis.PyQt.QtCore import QSettings
|
||||||
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog
|
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from PyQt5.QtCore import *
|
|
||||||
from PyQt5.QtGui import *
|
from qgis.PyQt.QtCore import *
|
||||||
from PyQt5 import QtGui
|
from qgis.PyQt.QtGui import *
|
||||||
|
from qgis.PyQt import QtGui
|
||||||
|
|
||||||
from qgis.core import *
|
from qgis.core import *
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
|
|
||||||
from .tools.PythonSQL import *
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
from .tools.SQLRequet import *
|
||||||
|
|
||||||
from .tools.resources import (
|
from .tools.resources import (
|
||||||
load_ui,
|
load_ui,
|
||||||
resources_path,
|
resources_path,
|
||||||
login_base,
|
|
||||||
send_issues,
|
send_issues,
|
||||||
create_vierge,
|
create_vierge,
|
||||||
create_contour,
|
create_contour,
|
||||||
@@ -50,16 +56,15 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
|
|||||||
|
|
||||||
### Outil Ajout de nouvelles couche a un dossier
|
### Outil Ajout de nouvelles couche a un dossier
|
||||||
def raise_(self):
|
def raise_(self):
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
self.activateWindow()
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
account = login_base("account")
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
user = account[0]
|
||||||
res_ident = first_cur.fetchone()
|
mdp = account[1]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
host = account[2]
|
||||||
user = res_ident[1]
|
port = account[3]
|
||||||
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
# Creation de la liste des schemas de la base de donnees
|
# Creation de la liste des schemas de la base de donnees
|
||||||
SQL = """WITH list_schema AS (
|
SQL = """WITH list_schema AS (
|
||||||
select schemaname,'sig' as group from pg_catalog.pg_tables
|
select schemaname,'sig' as group from pg_catalog.pg_tables
|
||||||
@@ -86,19 +91,18 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
|
|||||||
# show the dialog
|
# show the dialog
|
||||||
self.show()
|
self.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.exec_()
|
result = self.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result == 1:
|
if result == 1:
|
||||||
#******************************debut script*********************************
|
#******************************debut script*********************************
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if self.schema.currentIndex() == -1 :
|
if self.schema.currentIndex() == -1 :
|
||||||
QMessageBox.warning(None, "Oups :", "Veuillez choisir un nom de dossier.")
|
QMessageBox.warning(None, "Oups :", "Veuillez choisir un nom de dossier.")
|
||||||
|
|||||||
@@ -0,0 +1,240 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from __future__ import absolute_import
|
||||||
|
# Import the PyQt and QGIS libraries
|
||||||
|
from builtins import next
|
||||||
|
from builtins import str
|
||||||
|
from builtins import object
|
||||||
|
import qgis
|
||||||
|
from qgis.PyQt.QtCore import QSettings
|
||||||
|
from qgis.PyQt.QtWidgets import QAction, QMenu, QDialog, QMessageBox,QDialogButtonBox
|
||||||
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
|
from qgis.PyQt.QtCore import *
|
||||||
|
from qgis.PyQt.QtGui import *
|
||||||
|
from qgis.PyQt import QtGui
|
||||||
|
|
||||||
|
from qgis.core import *
|
||||||
|
from qgis.core import QgsDataSourceUri
|
||||||
|
|
||||||
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
|
from .tools.SQLRequet import *
|
||||||
|
|
||||||
|
from .tools.resources import (
|
||||||
|
load_ui,
|
||||||
|
resources_path,
|
||||||
|
send_issues,
|
||||||
|
create_vierge,
|
||||||
|
create_contour,
|
||||||
|
create_travaux,
|
||||||
|
create_habita
|
||||||
|
)
|
||||||
|
from .issues import CenRa_Issues
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
import webbrowser, os
|
||||||
|
import psycopg2
|
||||||
|
import psycopg2.extras
|
||||||
|
import base64
|
||||||
|
from qgis.utils import iface
|
||||||
|
|
||||||
|
EDITOR_CLASS = load_ui('CenRa_PostgisRename_base.ui')
|
||||||
|
ch = [u"à", u"À", u"â", u"Â", u"ä", u"Ä", u"å", u"Å", u"ç", u"Ç", u"é", u"É", u"è", u"È", u"ê", u"Ê", u"ë", u"Ë", u"î", u"Î", u"ï", u"Ï", u"ô", u"Ô", u"ö", u"Ö", u"ù", u"Ù", u"û", u"Û", u"ü", u"Ü", u"ÿ", u"Ÿ", u"'", u"-", u" "]
|
||||||
|
try:
|
||||||
|
account = login_base("account")
|
||||||
|
user = account[0]
|
||||||
|
mdp = account[1]
|
||||||
|
host = account[2]
|
||||||
|
port = account[3]
|
||||||
|
dbname = account[4]
|
||||||
|
cur = account[7]
|
||||||
|
con = account[8]
|
||||||
|
except:
|
||||||
|
print('')
|
||||||
|
class Postgis_Rename(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.iface = iface
|
||||||
|
|
||||||
|
self.schema.currentIndexChanged.connect(self.Test)
|
||||||
|
self.buttonBox.accepted.connect(self.msgBox)
|
||||||
|
### Outil Ajout de nouvelles couche a un dossier
|
||||||
|
def raise_(self):
|
||||||
|
self.activateWindow()
|
||||||
|
self.groupBox_3.hide()
|
||||||
|
self.buttonBox.button(QDialogButtonBox.StandardButton(0x00000400)).setEnabled(False)
|
||||||
|
GET_ALL_SCHEMA = """SELECT DISTINCT table_schema FROM information_schema.tables WHERE table_schema LIKE '_form_%' OR table_schema LIKE '_01_%' OR table_schema LIKE '_07_%' OR table_schema LIKE '_26_%' OR table_schema LIKE '_42_%' OR table_schema LIKE '_69_%' ORDER BY table_schema;"""
|
||||||
|
cur.execute(GET_ALL_SCHEMA)
|
||||||
|
AllSchema = cur.fetchall()
|
||||||
|
last_value_schema = self.schema.currentText()
|
||||||
|
last_value_departement = self.departement.currentText()
|
||||||
|
self.schema.clear()
|
||||||
|
self.departement.clear()
|
||||||
|
self.schema.addItems([''])
|
||||||
|
for Schema in AllSchema:
|
||||||
|
self.schema.addItems(Schema)
|
||||||
|
self.departement.addItems(['','01','07','26','42','69','form'])
|
||||||
|
if last_value_schema != '':
|
||||||
|
self.schema.setCurrentIndex(self.schema.findText(last_value_schema))
|
||||||
|
if last_value_departement != '':
|
||||||
|
self.departement.setCurrentIndex(self.departement.findText(last_value_departement))
|
||||||
|
|
||||||
|
def Test(self):
|
||||||
|
oldSchema = self.schema.currentText()
|
||||||
|
if oldSchema != '':
|
||||||
|
allIsGood = 0
|
||||||
|
|
||||||
|
GET_COUNT_LEFT = "SELECT count(*) FROM information_schema.tables WHERE table_schema LIKE left(table_name,"+str(len(oldSchema))+") AND table_schema LIKE '"+oldSchema+"';"
|
||||||
|
GET_COUNT_TOT = "SELECT count(*) FROM information_schema.tables WHERE table_schema LIKE '"+oldSchema+"';"
|
||||||
|
|
||||||
|
cur.execute(GET_COUNT_TOT)
|
||||||
|
CountTot = cur.fetchall()[0]
|
||||||
|
cur.execute(GET_COUNT_LEFT)
|
||||||
|
CountLeft = cur.fetchall()[0]
|
||||||
|
|
||||||
|
if CountLeft[0] == CountTot[0]:
|
||||||
|
allIsGood = allIsGood+1
|
||||||
|
self.couche.setChecked(1)
|
||||||
|
else:
|
||||||
|
self.couche.setChecked(0)
|
||||||
|
|
||||||
|
GET_GRANTEE_PRIVILEGE = "SELECT DISTINCT count(*) FROM information_schema.role_table_grants WHERE table_schema LIKE '"+oldSchema+"' AND grantee LIKE 'grp_qgis' AND privilege_type LIKE 'UPDATE';"
|
||||||
|
cur.execute(GET_GRANTEE_PRIVILEGE)
|
||||||
|
CountPrivilege = cur.fetchall()[0]
|
||||||
|
|
||||||
|
if CountTot[0] == CountPrivilege[0]:
|
||||||
|
allIsGood = allIsGood+1
|
||||||
|
self.compte.setChecked(1)
|
||||||
|
else:
|
||||||
|
self.compte.setChecked(0)
|
||||||
|
|
||||||
|
if allIsGood == 2:
|
||||||
|
self.groupBox_3.show()
|
||||||
|
self.loadValue()
|
||||||
|
self.buttonBox.button(QDialogButtonBox.StandardButton(0x00000400)).setEnabled(True)
|
||||||
|
else:
|
||||||
|
self.groupBox_3.hide()
|
||||||
|
self.buttonBox.button(QDialogButtonBox.StandardButton(0x00000400)).setEnabled(False)
|
||||||
|
else:
|
||||||
|
self.old_name.setText('')
|
||||||
|
self.compte.setChecked(0)
|
||||||
|
self.couche.setChecked(0)
|
||||||
|
self.groupBox_3.hide()
|
||||||
|
|
||||||
|
def loadValue(self):
|
||||||
|
oldSchema = self.schema.currentText()
|
||||||
|
if oldSchema[:6] == '_form_':
|
||||||
|
oldSchema = self.schema.currentText()[6:]
|
||||||
|
prefixSchema = self.schema.currentText()[1:5]
|
||||||
|
else:
|
||||||
|
oldSchema = self.schema.currentText()[4:]
|
||||||
|
prefixSchema = self.schema.currentText()[1:3]
|
||||||
|
if oldSchema[:3] == 'at_':
|
||||||
|
oldSchema = oldSchema[3:]
|
||||||
|
self.animation.setChecked(1)
|
||||||
|
else:
|
||||||
|
self.animation.setChecked(0)
|
||||||
|
self.old_name.setText(oldSchema)
|
||||||
|
self.departement.setCurrentIndex(self.departement.findText(prefixSchema))
|
||||||
|
|
||||||
|
def updateName(self):
|
||||||
|
if self.departement.currentText() != '':
|
||||||
|
oldTableName = self.old_name.text()
|
||||||
|
newTableName = ((self.new_name.text()).lower()).replace(' ','_')
|
||||||
|
newPrefixSchema = '_'+self.departement.currentText()+'_'
|
||||||
|
if self.schema.currentText()[:6] == '_form_':
|
||||||
|
oldPrefixSchema = self.schema.currentText()[:6]
|
||||||
|
if (self.schema.currentText()[6:9]) == "at_":
|
||||||
|
oldPrefixSchema=oldPrefixSchema+'at_'
|
||||||
|
else:
|
||||||
|
oldPrefixSchema = self.schema.currentText()[:4]
|
||||||
|
if (self.schema.currentText()[4:7]) == 'at_':
|
||||||
|
oldPrefixSchema=oldPrefixSchema+'at_'
|
||||||
|
|
||||||
|
if self.animation.isChecked():
|
||||||
|
newPrefixSchema=newPrefixSchema+'at_'
|
||||||
|
oldSchemaName = oldPrefixSchema+oldTableName
|
||||||
|
newSchemaName = newPrefixSchema+newTableName
|
||||||
|
|
||||||
|
if oldSchemaName != newSchemaName:
|
||||||
|
global AllSQLrun
|
||||||
|
allSQLrun=''
|
||||||
|
|
||||||
|
SQL_UPDATE = """UPDATE public.layer_styles SET f_table_schema = '"""+newSchemaName+"""',f_table_name = replace(replace(f_table_name,'"""+oldTableName+"""','"""+newTableName+"""'),'"""+oldPrefixSchema+"""','"""+newPrefixSchema+"""') WHERE f_table_schema LIKE '"""+oldSchemaName+"""';"""
|
||||||
|
allSQLrun = allSQLrun+SQL_UPDATE
|
||||||
|
cur.execute(SQL_UPDATE)
|
||||||
|
|
||||||
|
SQL_GET_TABLE_RENAME = """SELECT table_name,replace(replace(table_name,'"""+oldTableName+"""','"""+newTableName+"""'),'"""+oldPrefixSchema+"""','"""+newPrefixSchema+"""') from information_schema.tables WHERE table_schema LIKE '"""+oldSchemaName+"""';"""
|
||||||
|
cur.execute(SQL_GET_TABLE_RENAME)
|
||||||
|
allTableRename = cur.fetchall()
|
||||||
|
allTableList = []
|
||||||
|
for TableRename in allTableRename:
|
||||||
|
oldTable = TableRename[0]
|
||||||
|
newTable = TableRename[1]
|
||||||
|
allTableList.append([oldTable,newSchemaName,newTable])
|
||||||
|
SQL_RENAME_TABLE = """ALTER TABLE """+oldSchemaName+'.'+oldTable+""" RENAME TO """+newTable+""";"""
|
||||||
|
allSQLrun = allSQLrun+SQL_RENAME_TABLE
|
||||||
|
cur.execute(SQL_RENAME_TABLE)
|
||||||
|
|
||||||
|
SQL_RENAME_SCHEMA = 'ALTER SCHEMA '+oldSchemaName+' RENAME TO '+newSchemaName
|
||||||
|
allSQLrun = allSQLrun+SQL_RENAME_SCHEMA
|
||||||
|
cur.execute(SQL_RENAME_SCHEMA)
|
||||||
|
#print(allSQLrun)
|
||||||
|
con.commit()
|
||||||
|
for LayerOpen in allTableList:
|
||||||
|
self.UnloadLoadLayers(LayerOpen[0],LayerOpen[1],LayerOpen[2])
|
||||||
|
|
||||||
|
|
||||||
|
def UnloadLoadLayers(self,OldName,NewSchema,NewTable):
|
||||||
|
allLayers = (QgsProject.instance().mapLayers().values())
|
||||||
|
listLayers = []
|
||||||
|
listLayersName = []
|
||||||
|
for layer in allLayers:
|
||||||
|
listLayers.append(layer)
|
||||||
|
listLayersName.append(layer.name())
|
||||||
|
if OldName in listLayersName:
|
||||||
|
layer = (listLayers[listLayersName.index(OldName)])
|
||||||
|
provider = layer.dataProvider()
|
||||||
|
dbname = (QgsDataSourceUri(provider.dataSourceUri()).database())
|
||||||
|
user = QgsDataSourceUri(provider.dataSourceUri()).username()
|
||||||
|
mdp = QgsDataSourceUri(provider.dataSourceUri()).password()
|
||||||
|
host = QgsDataSourceUri(provider.dataSourceUri()).host()
|
||||||
|
port = QgsDataSourceUri(provider.dataSourceUri()).port()
|
||||||
|
|
||||||
|
### Affichage de la table
|
||||||
|
uri = QgsDataSourceUri()
|
||||||
|
# set host name, port, database name, username and password
|
||||||
|
uri.setConnection(host ,port ,dbname ,user ,mdp)
|
||||||
|
# set database schema, table name, geometry column and optionaly subset (WHERE clause)
|
||||||
|
uri.setDataSource(NewSchema, NewTable, 'geom')
|
||||||
|
QgsProject.instance().removeMapLayer(layer.id())
|
||||||
|
layer = self.iface.addVectorLayer(uri.uri(), NewTable, "postgres")
|
||||||
|
|
||||||
|
def msgBox(self):
|
||||||
|
self.QMBquestion = QMessageBox()
|
||||||
|
self.QMBquestion.setWindowTitle(u"Attention !")
|
||||||
|
self.QMBquestion.setIcon(QMessageBox.Icon.Warning)
|
||||||
|
self.QMBquestion.setText("Attention, le renommage de dossier PostGIS peut engendrer des pertes de liaisons avec des projets QGIS !")
|
||||||
|
self.QMBquestion.setStandardButtons(QMessageBox.StandardButton(0x00004000)|QMessageBox.StandardButton(0x00010000))
|
||||||
|
if self.new_name.text() != '':
|
||||||
|
error_caracteres = 0
|
||||||
|
for caracteres in ch :
|
||||||
|
if self.new_name.text().find(caracteres) != -1 :
|
||||||
|
error_caracteres = 1
|
||||||
|
if error_caracteres == 0:
|
||||||
|
self.QMBquestion = self.QMBquestion.exec()
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(None, "Oups :", u"Le nom de dossier ne doit pas comporter de caractères spéciaux, ni d'espaces !\n\n\t" + self.new_name.text().lower() )
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(None, "Oups :", "Votre projet doit avoire un nom !")
|
||||||
|
if self.QMBquestion == QMessageBox.StandardButton(0x00004000):
|
||||||
|
self.updateName()
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
from qgis.core import QgsApplication
|
|
||||||
|
|
||||||
def gitea():
|
|
||||||
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'
|
|
||||||
|
|
||||||
recherche_2 = 'github'
|
|
||||||
replace_2 = 'gitea'
|
|
||||||
|
|
||||||
# Read in the file
|
|
||||||
with open(file_url, 'r') as file:
|
|
||||||
filedata = file.read()
|
|
||||||
|
|
||||||
# Replace the target string
|
|
||||||
filedata = filedata.replace(recherche_1, replace_1)
|
|
||||||
filedata = filedata.replace(recherche_2, replace_2)
|
|
||||||
|
|
||||||
# Write the file out again
|
|
||||||
with open(file_url, 'w') as file:
|
|
||||||
file.write(filedata)
|
|
||||||
@@ -1,174 +1,141 @@
|
|||||||
import sys
|
|
||||||
import socket
|
geom = "geom"
|
||||||
import os
|
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))"""
|
||||||
IPAddr=socket.gethostbyname(socket.gethostname())
|
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))"""
|
||||||
if IPAddr[0:11] == "100.100.100": #4269
|
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))"""
|
||||||
host = "100.100.100.11"
|
|
||||||
port = "5432"
|
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
||||||
dbname = "sig4269"
|
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
||||||
sigdb="sig4269"
|
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
||||||
refdb="ref_geo4269"
|
|
||||||
password = "McVities"
|
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))"""
|
||||||
if IPAddr[0:9] == "192.168.0": #01
|
|
||||||
host = "192.168.0.201"
|
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))
|
||||||
port = "5432"
|
"""
|
||||||
dbname = "sig01"
|
|
||||||
sigdb="sig01"
|
champ_vegethab_point = """(
|
||||||
refdb="ref_geo01"
|
gid serial NOT NULL ,
|
||||||
password = "McVities"
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
if IPAddr[0:9] == "192.168.1": #0726
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
host = "192.168.1.201"
|
occupati_1 bigint,
|
||||||
port = "5432"
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
dbname = "sig0726"
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
sigdb="sig0726"
|
occupati_2 bigint,
|
||||||
refdb="ref_geo0726"
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
password = "McVities"
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
if sys.platform == 'linux':
|
occupati_3 bigint,
|
||||||
os_user = os.environ['USER']
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
else:
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
os_user = os.environ['USERNAME']
|
x_wgs84 double precision,
|
||||||
if os_user == 'STAGE':
|
y_wgs84 double precision,
|
||||||
os_user='stage'
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
if os_user == 'Administrateur':
|
date_creat date,
|
||||||
os_user='stage'
|
date_maj date,
|
||||||
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
geom = "geom"
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePolygone = """(gid serial NOT NULL, commentaire text, surface_m2 double precision, surface_ha double precision, geom geometry(MultiPolygon,2154))"""
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergeLigne = """(gid serial NOT NULL, commentaire text, longueur_m double precision, longueur_km double precision, geom geometry(MultiLineString,2154))"""
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_viergePoint = """(gid serial NOT NULL, commentaire text, x_wgs84 double precision, y_wgs84 double precision, geom geometry(Point,2154))"""
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
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))"""
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
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))
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_point = """(
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
date_sais date,
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(Point,2154)
|
||||||
occupati_2 bigint,
|
)
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multilinestring = """(
|
||||||
occupati_3 bigint,
|
gid serial NOT NULL ,
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
x_wgs84 double precision,
|
occupati_1 bigint,
|
||||||
y_wgs84 double precision,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
occupati_2 bigint,
|
||||||
date_maj date,
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
longueur_m double precision,
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
longueur_km double precision,
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(Point,2154)
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multilinestring = """(
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
date_sais date,
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiLineString,2154)
|
||||||
occupati_2 bigint,
|
)
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
"""
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
champ_vegethab_multipolygon = """(
|
||||||
occupati_3 bigint,
|
gid serial NOT NULL ,
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
||||||
longueur_m double precision,
|
occupati_1 bigint,
|
||||||
longueur_km double precision,
|
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
||||||
date_creat date,
|
occupati_2 bigint,
|
||||||
date_maj date,
|
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
occupati_3 bigint,
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
surface_m2 numeric,
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
surface_ha numeric,
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
commentair character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
date_creat date,
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
date_maj date,
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
num_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
type_unite character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
dynamique character varying(254) COLLATE pg_catalog."default",
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
eta_conser character varying(254) COLLATE pg_catalog."default",
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
date_sais date,
|
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
syntaxon character varying(254) COLLATE pg_catalog."default",
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
n2000 character varying(254) COLLATE pg_catalog."default",
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
||||||
geom geometry(MultiLineString,2154)
|
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
||||||
)
|
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
||||||
"""
|
num_photo character varying(254) COLLATE pg_catalog."default",
|
||||||
champ_vegethab_multipolygon = """(
|
nature_obs character varying(254) COLLATE pg_catalog."default",
|
||||||
gid serial NOT NULL ,
|
date_sais date,
|
||||||
cd_eu_01 character varying(254) COLLATE pg_catalog."default",
|
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_01 character varying(254) COLLATE pg_catalog."default",
|
alli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
occupati_1 bigint,
|
salli_name character varying(254) COLLATE pg_catalog."default",
|
||||||
cd_eu_02 character varying(254) COLLATE pg_catalog."default",
|
class_name character varying(254) COLLATE pg_catalog."default",
|
||||||
lb_eu_02 character varying(254) COLLATE pg_catalog."default",
|
geom geometry(MultiPolygon,2154)
|
||||||
occupati_2 bigint,
|
)
|
||||||
cd_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lb_eu_03 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
occupati_3 bigint,
|
|
||||||
milieu_cod character varying(254) COLLATE pg_catalog."default",
|
|
||||||
milieu_lib character varying(254) COLLATE pg_catalog."default",
|
|
||||||
surface_m2 numeric,
|
|
||||||
surface_ha numeric,
|
|
||||||
commentair character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_creat date,
|
|
||||||
date_maj date,
|
|
||||||
num_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
type_unite character varying(254) COLLATE pg_catalog."default",
|
|
||||||
dynamique character varying(254) COLLATE pg_catalog."default",
|
|
||||||
gestio_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
degrad_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
eta_conser character varying(254) COLLATE pg_catalog."default",
|
|
||||||
clas_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
syntaxon character varying(254) COLLATE pg_catalog."default",
|
|
||||||
n2000 character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_aura character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbna character varying(254) COLLATE pg_catalog."default",
|
|
||||||
lrr_cbnmc character varying(254) COLLATE pg_catalog."default",
|
|
||||||
vege_enjeu character varying(254) COLLATE pg_catalog."default",
|
|
||||||
num_photo character varying(254) COLLATE pg_catalog."default",
|
|
||||||
nature_obs character varying(254) COLLATE pg_catalog."default",
|
|
||||||
date_sais date,
|
|
||||||
s_al_phyto character varying(254) COLLATE pg_catalog."default",
|
|
||||||
alli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
salli_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
class_name character varying(254) COLLATE pg_catalog."default",
|
|
||||||
geom geometry(MultiPolygon,2154)
|
|
||||||
)
|
|
||||||
"""
|
"""
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
@@ -6,10 +6,10 @@ import tempfile
|
|||||||
import base64
|
import base64
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
import os
|
||||||
from os.path import abspath, join, pardir, dirname
|
from os.path import abspath, join, pardir, dirname
|
||||||
from qgis.core import QgsDataSourceUri
|
from qgis.core import QgsDataSourceUri
|
||||||
from .PythonSQL import *
|
from .SQLRequet import *
|
||||||
|
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
|
|
||||||
__copyright__ = "Copyright 2019, 3Liz"
|
__copyright__ = "Copyright 2019, 3Liz"
|
||||||
@@ -109,24 +109,15 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
def pyperclip():
|
||||||
from .PythonSQL import host,port,dbname,password,os_user
|
dst = dirname(dirname(__file__))+"\\tools\\"
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
if os.access('N:/',os.R_OK):
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py'
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
try:
|
||||||
res_ident = first_cur.fetchone()
|
shutil.copy(src, dst)
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
except:
|
||||||
user = res_ident[1]
|
print('404')
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -159,7 +150,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
@@ -233,7 +224,7 @@ def create_contour(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
|||||||
uri.setDataSource(schema, tablename, geom)
|
uri.setDataSource(schema, tablename, geom)
|
||||||
|
|
||||||
layer = self.iface.addVectorLayer(uri.uri(), tablename_qgis, "postgres")
|
layer = self.iface.addVectorLayer(uri.uri(), tablename_qgis, "postgres")
|
||||||
def create_travaux(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
def create_travaux(self,schema,cur,con,host,port,dbname,user,mdp):
|
||||||
### Creation de la table travaux prevus
|
### Creation de la table travaux prevus
|
||||||
if self.couche_travaux_prevus.isChecked():
|
if self.couche_travaux_prevus.isChecked():
|
||||||
#**********Poly
|
#**********Poly
|
||||||
@@ -373,16 +364,19 @@ def create_travaux(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
|||||||
def create_habita(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
def create_habita(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
|
||||||
### Creation de la table habitat
|
### Creation de la table habitat
|
||||||
if self.couche_habitat.isChecked():
|
if self.couche_habitat.isChecked():
|
||||||
if self.annee_2.text() == 'aaaa' or self.annee_2.text() == '':
|
if self.annee_2.text() == 'aaaa' or self.annee_2.text() == '':
|
||||||
tablename = schema + "_habitat"
|
tablename = schema + "_habitat"
|
||||||
else :
|
else :
|
||||||
tablename = schema + "_habitat_" + self.annee_2.text()
|
tablename = schema + "_habitat_" + self.annee_2.text()
|
||||||
|
|
||||||
tablename_1=tablename+"_points"
|
tablename_1=tablename+"_points"
|
||||||
RETURNE = "SELECT pg_get_serial_sequence('"+schema + "."+ tablename_1[len(schema):]+"','gid')"
|
RETURNE = "SELECT pg_get_serial_sequence('"+schema + "."+tablename_1+"','gid')"
|
||||||
tablename_qgis = tablename_1[1:] # Permet d'enlever le "_", ajouter a la premiere etape, dans qgis
|
tablename_qgis = tablename_1[1:] # Permet d'enlever le "_", ajouter a la premiere etape, dans qgis
|
||||||
SQL_VEGETHAB = "CREATE TABLE "+ schema + "."+ tablename_1 + champ_vegethab_point
|
SQL_VEGETHAB = "CREATE TABLE "+ schema + "."+ tablename_1 + champ_vegethab_point
|
||||||
|
|
||||||
|
print(RETURNE)
|
||||||
|
print('')
|
||||||
|
print(SQL_VEGETHAB)
|
||||||
cur.execute(SQL_VEGETHAB)
|
cur.execute(SQL_VEGETHAB)
|
||||||
cur.execute(RETURNE)
|
cur.execute(RETURNE)
|
||||||
sequence_name = cur.fetchone()[0]
|
sequence_name = cur.fetchone()[0]
|
||||||
|
|||||||
@@ -0,0 +1,288 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>table_postgis</class>
|
||||||
|
<widget class="QDialog" name="table_postgis">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>533</width>
|
||||||
|
<height>364</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Ajout d'une table</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_4">
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>3</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="schema_label">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>90</width>
|
||||||
|
<height>1977</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Code analytique :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="schema"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Tester mon éligibilite :</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QCheckBox" name="compte">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Compte</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QCheckBox" name="couche">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Couche</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="groupBox_3">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>Les changement :</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Nouvau nom :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Partie a renommée :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="old_name">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<italic>true</italic>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="new_name"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>130</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>50</weight>
|
||||||
|
<bold>false</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Département/Animation :</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2">
|
||||||
|
<widget class="QRadioButton" name="animation">
|
||||||
|
<property name="text">
|
||||||
|
<string>Animation territoriale</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="departement"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLabel" name="Titre">
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>16777215</width>
|
||||||
|
<height>30</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>14</pointsize>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Renommée de table</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>accepted()</signal>
|
||||||
|
<receiver>table_postgis</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>248</x>
|
||||||
|
<y>254</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>157</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>buttonBox</sender>
|
||||||
|
<signal>rejected()</signal>
|
||||||
|
<receiver>table_postgis</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>316</x>
|
||||||
|
<y>260</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>286</x>
|
||||||
|
<y>274</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -29,9 +29,6 @@
|
|||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
@@ -41,7 +38,7 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>453</width>
|
<width>453</width>
|
||||||
<height>547</height>
|
<height>570</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox">
|
||||||
@@ -56,7 +53,7 @@
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>DevLog</string>
|
<string>DevLog</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWebView" name="viewer" native="true">
|
<widget class="QTextBrowser" name="viewer">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -65,11 +62,6 @@
|
|||||||
<height>511</height>
|
<height>511</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="url" stdset="0">
|
|
||||||
<url>
|
|
||||||
<string>about:blank</string>
|
|
||||||
</url>
|
|
||||||
</property>
|
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
@@ -78,19 +70,12 @@
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
<property name="standardButtons">
|
<property name="standardButtons">
|
||||||
<set>QDialogButtonBox::Ok</set>
|
<set>QDialogButtonBox::NoButton</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>QWebView</class>
|
|
||||||
<extends>QWidget</extends>
|
|
||||||
<header location="global">QtWebKitWidgets/QWebView</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -11,8 +11,9 @@
|
|||||||
[general]
|
[general]
|
||||||
name=CenRa SICEN
|
name=CenRa SICEN
|
||||||
qgisMinimumVersion=3.0
|
qgisMinimumVersion=3.0
|
||||||
|
supportsQt6=True
|
||||||
description=Filtre des données saisies dans SICEN et export d'une liste d'espèces.
|
description=Filtre des données saisies dans SICEN et export d'une liste d'espèces.
|
||||||
version=1.8
|
version=2.0
|
||||||
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
|
||||||
email=si_besoin@cen-rhonealpes.fr
|
email=si_besoin@cen-rhonealpes.fr
|
||||||
|
|
||||||
@@ -21,7 +22,7 @@ email=si_besoin@cen-rhonealpes.fr
|
|||||||
# Optional items:
|
# Optional items:
|
||||||
|
|
||||||
# Uncomment the following line and add your changelog entries:
|
# Uncomment the following line and add your changelog entries:
|
||||||
changelog=<h2>CenRa_SICEN:</h2></br><p><h3>07/01/2025 - Version 1.8: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>13/09/2024 - Version 1.7:</h3> - Il est maintenant possible de sélectionné plusieurs entité pour le filtre par Emprise.</br>- Ajoute d'un changelog.</br>- Ajoute une vérification de mise à jour.</p>
|
changelog=<h2>CenRa_SICEN:</h2></br><p><h3>19/05/2025 - Version 2.0: </h3> - Compatible PyQt5 et PyQt6</p></br><p><h3>09/04/2025 - Version 1.11: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 1.10: </h3> - Optimisation pour le TT.</p></br><p><h3>03/04/2025 - Version 1.9: </h3> - Mise a jour de securite.</p></br><p><h3>07/01/2025 - Version 1.8: </h3> - ByPass du certif ssl ci erreur.</br></p><p><h3>13/09/2024 - Version 1.7:</h3> - Il est maintenant possible de sélectionné plusieurs entité pour le filtre par Emprise.</br>- Ajoute d'un changelog.</br>- Ajoute une vérification de mise à jour.</p>
|
||||||
|
|
||||||
# tags are comma separated with spaces allowed
|
# tags are comma separated with spaces allowed
|
||||||
tags=cenra, postgis, sicen
|
tags=cenra, postgis, sicen
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.2)
|
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.2)
|
||||||
#
|
#
|
||||||
# WARNING! All changes made in this file will be lost!
|
# WARNING! All changes made in this file will be lost!
|
||||||
|
try:
|
||||||
from PyQt5 import QtCore
|
from PyQt5 import QtCore
|
||||||
|
except:
|
||||||
|
from PyQt6 import QtCore
|
||||||
qt_resource_data = b"\
|
qt_resource_data = b"\
|
||||||
\x00\x00\x0d\x89\
|
\x00\x00\x0d\x89\
|
||||||
\x89\
|
\x89\
|
||||||
|
|||||||
+67
-55
@@ -32,8 +32,12 @@ from qgis.utils import iface"""
|
|||||||
from builtins import str
|
from builtins import str
|
||||||
from builtins import object
|
from builtins import object
|
||||||
import os
|
import os
|
||||||
from PyQt5.QtCore import *
|
try:
|
||||||
from PyQt5.QtGui import *
|
from PyQt5.QtCore import *
|
||||||
|
from PyQt5.QtGui import *
|
||||||
|
except:
|
||||||
|
from PyQt6.QtCore import *
|
||||||
|
from PyQt6.QtGui import *
|
||||||
from qgis.PyQt import uic
|
from qgis.PyQt import uic
|
||||||
from qgis.core import *
|
from qgis.core import *
|
||||||
from qgis.core import QgsDataSourceUri, QgsWkbTypes, QgsLayerTreeGroup, QgsLayerTreeLayer
|
from qgis.core import QgsDataSourceUri, QgsWkbTypes, QgsLayerTreeGroup, QgsLayerTreeLayer
|
||||||
@@ -45,8 +49,13 @@ from qgis.PyQt.QtWidgets import QMenu, QAction, QDialog, QDialogButtonBox, QLabe
|
|||||||
from . import resources_rc
|
from . import resources_rc
|
||||||
# Import the code for the dialog
|
# Import the code for the dialog
|
||||||
from .sicendialog import SICENDialog
|
from .sicendialog import SICENDialog
|
||||||
from .tools.PythonSQL import *
|
|
||||||
from .tools.resources import maj_verif
|
from .tools.resources import maj_verif,pyperclip
|
||||||
|
pyperclip()
|
||||||
|
try:
|
||||||
|
from .tools.PythonSQL import login_base
|
||||||
|
except:
|
||||||
|
print('Pas de fichier PythonSQL')
|
||||||
import os.path
|
import os.path
|
||||||
import qgis
|
import qgis
|
||||||
import datetime
|
import datetime
|
||||||
@@ -57,7 +66,7 @@ from .forms.about_form import AboutDialog
|
|||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
import base64
|
import base64
|
||||||
#import socket
|
import socket
|
||||||
import os
|
import os
|
||||||
#import sys
|
#import sys
|
||||||
|
|
||||||
@@ -100,6 +109,9 @@ class SICEN(object):
|
|||||||
self.action = QAction(
|
self.action = QAction(
|
||||||
QIcon(":/plugins/sicen/sicen.png"),
|
QIcon(":/plugins/sicen/sicen.png"),
|
||||||
u"Ouverture des données SICEN", self.iface.mainWindow())
|
u"Ouverture des données SICEN", self.iface.mainWindow())
|
||||||
|
self.action.setEnabled(False)
|
||||||
|
if os.access('N:/',os.R_OK):
|
||||||
|
self.action.setEnabled(True)
|
||||||
# connect the action to the run method
|
# connect the action to the run method
|
||||||
self.action.triggered.connect(self.ouverture)
|
self.action.triggered.connect(self.ouverture)
|
||||||
|
|
||||||
@@ -111,6 +123,14 @@ class SICEN(object):
|
|||||||
self.action = QAction(
|
self.action = QAction(
|
||||||
QIcon(":/plugins/sicen/sicen_export.png"),
|
QIcon(":/plugins/sicen/sicen_export.png"),
|
||||||
u"Export liste d'espèces", self.iface.mainWindow())
|
u"Export liste d'espèces", self.iface.mainWindow())
|
||||||
|
self.action.setEnabled(False)
|
||||||
|
IPAddr=socket.gethostbyname(socket.gethostname())
|
||||||
|
if IPAddr[0:11] == "100.100.100":
|
||||||
|
self.action.setEnabled(True)
|
||||||
|
elif IPAddr[0:9] == "192.168.0":
|
||||||
|
self.action.setEnabled(True)
|
||||||
|
elif IPAddr[0:9] == "192.168.1":
|
||||||
|
self.action.setEnabled(True)
|
||||||
# connect the action to the run method
|
# connect the action to the run method
|
||||||
self.action.triggered.connect(self.export)
|
self.action.triggered.connect(self.export)
|
||||||
|
|
||||||
@@ -136,7 +156,7 @@ class SICEN(object):
|
|||||||
|
|
||||||
def open_about_dialog(self):
|
def open_about_dialog(self):
|
||||||
dialog = AboutDialog(self.iface)
|
dialog = AboutDialog(self.iface)
|
||||||
dialog.exec_()
|
dialog.exec()
|
||||||
|
|
||||||
def unload(self):
|
def unload(self):
|
||||||
# Remove the plugin menu item and icon
|
# Remove the plugin menu item and icon
|
||||||
@@ -146,16 +166,14 @@ class SICEN(object):
|
|||||||
# run method that performs all the real work
|
# run method that performs all the real work
|
||||||
def ouverture(self):
|
def ouverture(self):
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
|
cur = account[7]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
con = account[8]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
## Creation des listes deroulantes
|
## Creation des listes deroulantes
|
||||||
# Listing de valeur des champs
|
# Listing de valeur des champs
|
||||||
@@ -251,20 +269,18 @@ class SICEN(object):
|
|||||||
# show the dialog
|
# show the dialog
|
||||||
self.dlg.show()
|
self.dlg.show()
|
||||||
# Run the dialog event loop
|
# Run the dialog event loop
|
||||||
result = self.dlg.exec_()
|
result = self.dlg.exec()
|
||||||
# See if OK was pressed
|
# See if OK was pressed
|
||||||
if result == 1:
|
if result == 1:
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
|
cur = account[7]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
con = account[8]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
# Requete filtre observateur
|
# Requete filtre observateur
|
||||||
if self.dlg.observateur_1.currentIndex() != -1 :
|
if self.dlg.observateur_1.currentIndex() != -1 :
|
||||||
@@ -620,15 +636,14 @@ class SICEN(object):
|
|||||||
|
|
||||||
else :
|
else :
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
# Creation group de couches
|
# Creation group de couches
|
||||||
#i = qgis.utils.iface
|
#i = qgis.utils.iface
|
||||||
@@ -753,15 +768,14 @@ class SICEN(object):
|
|||||||
|
|
||||||
else :
|
else :
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
cur = account[7]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
con = account[8]
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
# Creation group de couches
|
# Creation group de couches
|
||||||
i = qgis.utils.iface
|
i = qgis.utils.iface
|
||||||
@@ -862,16 +876,14 @@ class SICEN(object):
|
|||||||
|
|
||||||
buffer = '100'
|
buffer = '100'
|
||||||
|
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
account = login_base("account")
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
user = account[0]
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
mdp = account[1]
|
||||||
res_ident = first_cur.fetchone()
|
host = account[2]
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
port = account[3]
|
||||||
user = res_ident[1]
|
dbname = account[4]
|
||||||
|
cur = account[7]
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
con = account[8]
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
SQL_list_sp = u"""SELECT DISTINCT classe::text,ordre::text,nom_complet::text,split_part(nom_vern::text,',',1) as nom_vern,cd_ref::text as cd_ref,max(COALESCE(date_obs, date_debut_obs))::text AS derniere_obs FROM _agregation_ra.observations_table WHERE ST_intersects(geometrie,ST_Buffer(ST_geomFromText('""" + poly + "',2154), " + buffer + " ))GROUP BY classe::text, ordre::text, nom_complet::text, nom_vern::text, cd_ref::text ORDER BY nom_complet::text"""
|
SQL_list_sp = u"""SELECT DISTINCT classe::text,ordre::text,nom_complet::text,split_part(nom_vern::text,',',1) as nom_vern,cd_ref::text as cd_ref,max(COALESCE(date_obs, date_debut_obs))::text AS derniere_obs FROM _agregation_ra.observations_table WHERE ST_intersects(geometrie,ST_Buffer(ST_geomFromText('""" + poly + "',2154), " + buffer + " ))GROUP BY classe::text, ordre::text, nom_complet::text, nom_vern::text, cd_ref::text ORDER BY nom_complet::text"""
|
||||||
cur.execute(SQL_list_sp)
|
cur.execute(SQL_list_sp)
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
from qgis.core import QgsApplication
|
|
||||||
|
|
||||||
def gitea():
|
|
||||||
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'
|
|
||||||
|
|
||||||
recherche_2 = 'github'
|
|
||||||
replace_2 = 'gitea'
|
|
||||||
|
|
||||||
# Read in the file
|
|
||||||
with open(file_url, 'r') as file:
|
|
||||||
filedata = file.read()
|
|
||||||
|
|
||||||
# Replace the target string
|
|
||||||
filedata = filedata.replace(recherche_1, replace_1)
|
|
||||||
filedata = filedata.replace(recherche_2, replace_2)
|
|
||||||
|
|
||||||
# Write the file out again
|
|
||||||
with open(file_url, 'w') as file:
|
|
||||||
file.write(filedata)
|
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
import configparser
|
import configparser
|
||||||
import shutil
|
import shutil
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import os
|
||||||
import base64
|
import base64
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
@@ -89,7 +90,7 @@ def resources_path(*args):
|
|||||||
:return: Absolute path to the resources folder.
|
:return: Absolute path to the resources folder.
|
||||||
:rtype: str
|
:rtype: str
|
||||||
"""
|
"""
|
||||||
path = abspath(abspath(join(plugin_path(), "CenRa_Metabase\\tools")))
|
path = abspath(abspath(join(plugin_path(), "CenRa_SICEN\\tools")))
|
||||||
for item in args:
|
for item in args:
|
||||||
path = abspath(join(path, item))
|
path = abspath(join(path, item))
|
||||||
return path
|
return path
|
||||||
@@ -107,24 +108,15 @@ def load_ui(*args):
|
|||||||
|
|
||||||
return ui_class
|
return ui_class
|
||||||
|
|
||||||
def login_base(take=None):
|
def pyperclip():
|
||||||
from .tools.PythonSQL import host,port,dbname,password,os_user
|
dst = dirname(dirname(__file__))+"\\tools\\"
|
||||||
first_conn = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=first_cnx password=" + password)
|
if os.access('N:/',os.R_OK):
|
||||||
first_cur = first_conn.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
src = 'N:/SI_Systeme d information/Z_QGIS/PLUGIN/PythonSQL.py'
|
||||||
first_cur.execute("SELECT mdp_w, login_w FROM pg_catalog.pg_user t1, admin_sig.vm_users_sig t2 WHERE t2.oid = t1.usesysid AND (login_w = '" + os_user + "' OR login_w = '" + os_user + "')")
|
try:
|
||||||
res_ident = first_cur.fetchone()
|
shutil.copy(src, dst)
|
||||||
mdp = base64.b64decode(str(res_ident[0])).decode('utf-8')
|
except:
|
||||||
user = res_ident[1]
|
print('404')
|
||||||
|
|
||||||
con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
|
|
||||||
|
|
||||||
cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
|
|
||||||
first_conn.close()
|
|
||||||
|
|
||||||
if take:
|
|
||||||
return cur,con
|
|
||||||
else:
|
|
||||||
return cur
|
|
||||||
def send_issues(url,titre,body,labels):
|
def send_issues(url,titre,body,labels):
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
@@ -157,7 +149,7 @@ def maj_verif(NAME):
|
|||||||
|
|
||||||
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/releases/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)
|
||||||
|
|||||||
+41
-41
@@ -33,8 +33,8 @@ class Ui_SICEN(object):
|
|||||||
SICEN.resize(592, 556)
|
SICEN.resize(592, 556)
|
||||||
self.buttonBox = QDialogButtonBox(SICEN)
|
self.buttonBox = QDialogButtonBox(SICEN)
|
||||||
self.buttonBox.setGeometry(QtCore.QRect(390, 520, 161, 32))
|
self.buttonBox.setGeometry(QtCore.QRect(390, 520, 161, 32))
|
||||||
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
|
#self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
|
||||||
self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
|
self.buttonBox.setStandardButtons(QDialogButtonBox.StandardButton(0x00400000)|QDialogButtonBox.StandardButton(0x00000400))
|
||||||
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
|
self.buttonBox.setObjectName(_fromUtf8("buttonBox"))
|
||||||
self.Titre = QLabel(SICEN)
|
self.Titre = QLabel(SICEN)
|
||||||
self.Titre.setGeometry(QtCore.QRect(110, 10, 331, 31))
|
self.Titre.setGeometry(QtCore.QRect(110, 10, 331, 31))
|
||||||
@@ -46,8 +46,8 @@ class Ui_SICEN(object):
|
|||||||
self.Titre.setObjectName(_fromUtf8("Titre"))
|
self.Titre.setObjectName(_fromUtf8("Titre"))
|
||||||
self.Emprise = QTabWidget(SICEN)
|
self.Emprise = QTabWidget(SICEN)
|
||||||
self.Emprise.setGeometry(QtCore.QRect(10, 80, 571, 431))
|
self.Emprise.setGeometry(QtCore.QRect(10, 80, 571, 431))
|
||||||
self.Emprise.setTabPosition(QTabWidget.North)
|
self.Emprise.setTabPosition(QTabWidget.TabPosition(0))
|
||||||
self.Emprise.setTabShape(QTabWidget.Rounded)
|
self.Emprise.setTabShape(QTabWidget.TabShape(0))
|
||||||
self.Emprise.setObjectName(_fromUtf8("Emprise"))
|
self.Emprise.setObjectName(_fromUtf8("Emprise"))
|
||||||
self.tab_2 = QWidget()
|
self.tab_2 = QWidget()
|
||||||
self.tab_2.setObjectName(_fromUtf8("tab_2"))
|
self.tab_2.setObjectName(_fromUtf8("tab_2"))
|
||||||
@@ -57,7 +57,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_4.setFont(font)
|
self.groupBox_4.setFont(font)
|
||||||
self.groupBox_4.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_4.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
|
self.groupBox_4.setObjectName(_fromUtf8("groupBox_4"))
|
||||||
self.gridLayoutWidget_5 = QWidget(self.groupBox_4)
|
self.gridLayoutWidget_5 = QWidget(self.groupBox_4)
|
||||||
self.gridLayoutWidget_5.setGeometry(QtCore.QRect(10, 20, 521, 51))
|
self.gridLayoutWidget_5.setGeometry(QtCore.QRect(10, 20, 521, 51))
|
||||||
@@ -99,7 +99,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_5.setFont(font)
|
self.groupBox_5.setFont(font)
|
||||||
self.groupBox_5.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_5.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_5.setObjectName(_fromUtf8("groupBox_5"))
|
self.groupBox_5.setObjectName(_fromUtf8("groupBox_5"))
|
||||||
self.gridLayoutWidget_6 = QWidget(self.groupBox_5)
|
self.gridLayoutWidget_6 = QWidget(self.groupBox_5)
|
||||||
self.gridLayoutWidget_6.setGeometry(QtCore.QRect(10, 20, 521, 41))
|
self.gridLayoutWidget_6.setGeometry(QtCore.QRect(10, 20, 521, 41))
|
||||||
@@ -113,7 +113,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label.setFont(font)
|
self.label.setFont(font)
|
||||||
self.label.setAlignment(QtCore.Qt.AlignCenter)
|
self.label.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label.setObjectName(_fromUtf8("label"))
|
self.label.setObjectName(_fromUtf8("label"))
|
||||||
self.gridLayout_6.addWidget(self.label, 0, 0, 1, 1)
|
self.gridLayout_6.addWidget(self.label, 0, 0, 1, 1)
|
||||||
self.label_2 = QLabel(self.gridLayoutWidget_6)
|
self.label_2 = QLabel(self.gridLayoutWidget_6)
|
||||||
@@ -122,7 +122,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_2.setFont(font)
|
self.label_2.setFont(font)
|
||||||
self.label_2.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_2.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
self.label_2.setObjectName(_fromUtf8("label_2"))
|
||||||
self.gridLayout_6.addWidget(self.label_2, 0, 1, 1, 1)
|
self.gridLayout_6.addWidget(self.label_2, 0, 1, 1, 1)
|
||||||
self.nom_com_1 = QComboBox(self.gridLayoutWidget_6)
|
self.nom_com_1 = QComboBox(self.gridLayoutWidget_6)
|
||||||
@@ -147,7 +147,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_7.setFont(font)
|
self.groupBox_7.setFont(font)
|
||||||
self.groupBox_7.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_7.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_7.setObjectName(_fromUtf8("groupBox_7"))
|
self.groupBox_7.setObjectName(_fromUtf8("groupBox_7"))
|
||||||
self.gridLayoutWidget_8 = QWidget(self.groupBox_7)
|
self.gridLayoutWidget_8 = QWidget(self.groupBox_7)
|
||||||
self.gridLayoutWidget_8.setGeometry(QtCore.QRect(10, 20, 520, 191))
|
self.gridLayoutWidget_8.setGeometry(QtCore.QRect(10, 20, 520, 191))
|
||||||
@@ -161,7 +161,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_3.setFont(font)
|
self.label_3.setFont(font)
|
||||||
self.label_3.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_3.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_3.setObjectName(_fromUtf8("label_3"))
|
self.label_3.setObjectName(_fromUtf8("label_3"))
|
||||||
self.gridLayout_8.addWidget(self.label_3, 0, 0, 1, 1)
|
self.gridLayout_8.addWidget(self.label_3, 0, 0, 1, 1)
|
||||||
self.label_4 = QLabel(self.gridLayoutWidget_8)
|
self.label_4 = QLabel(self.gridLayoutWidget_8)
|
||||||
@@ -170,7 +170,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_4.setFont(font)
|
self.label_4.setFont(font)
|
||||||
self.label_4.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_4.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_4.setObjectName(_fromUtf8("label_4"))
|
self.label_4.setObjectName(_fromUtf8("label_4"))
|
||||||
self.gridLayout_8.addWidget(self.label_4, 0, 1, 1, 1)
|
self.gridLayout_8.addWidget(self.label_4, 0, 1, 1, 1)
|
||||||
self.date_min = QCalendarWidget(self.gridLayoutWidget_8)
|
self.date_min = QCalendarWidget(self.gridLayoutWidget_8)
|
||||||
@@ -188,7 +188,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_8.setFont(font)
|
self.groupBox_8.setFont(font)
|
||||||
self.groupBox_8.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_8.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_8.setObjectName(_fromUtf8("groupBox_8"))
|
self.groupBox_8.setObjectName(_fromUtf8("groupBox_8"))
|
||||||
self.gridLayoutWidget_9 = QWidget(self.groupBox_8)
|
self.gridLayoutWidget_9 = QWidget(self.groupBox_8)
|
||||||
self.gridLayoutWidget_9.setGeometry(QtCore.QRect(10, 20, 491, 21))
|
self.gridLayoutWidget_9.setGeometry(QtCore.QRect(10, 20, 491, 21))
|
||||||
@@ -202,7 +202,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.Animalia.setFont(font)
|
self.Animalia.setFont(font)
|
||||||
self.Animalia.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.Animalia.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.Animalia.setObjectName(_fromUtf8("Animalia"))
|
self.Animalia.setObjectName(_fromUtf8("Animalia"))
|
||||||
self.gridLayout_9.addWidget(self.Animalia, 0, 0, 1, 1)
|
self.gridLayout_9.addWidget(self.Animalia, 0, 0, 1, 1)
|
||||||
self.Plantae = QCheckBox(self.gridLayoutWidget_9)
|
self.Plantae = QCheckBox(self.gridLayoutWidget_9)
|
||||||
@@ -226,8 +226,8 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_6.setFont(font)
|
self.label_6.setFont(font)
|
||||||
self.label_6.setLayoutDirection(QtCore.Qt.LeftToRight)
|
self.label_6.setLayoutDirection(QtCore.Qt.LayoutDirection(0))
|
||||||
self.label_6.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_6.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_6.setObjectName(_fromUtf8("label_6"))
|
self.label_6.setObjectName(_fromUtf8("label_6"))
|
||||||
self.gridLayout_11.addWidget(self.label_6, 4, 0, 1, 1)
|
self.gridLayout_11.addWidget(self.label_6, 4, 0, 1, 1)
|
||||||
self.nom_vern = QComboBox(self.gridLayoutWidget_10)
|
self.nom_vern = QComboBox(self.gridLayoutWidget_10)
|
||||||
@@ -245,7 +245,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_5.setFont(font)
|
self.label_5.setFont(font)
|
||||||
self.label_5.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_5.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_5.setObjectName(_fromUtf8("label_5"))
|
self.label_5.setObjectName(_fromUtf8("label_5"))
|
||||||
self.gridLayout_11.addWidget(self.label_5, 2, 0, 1, 1)
|
self.gridLayout_11.addWidget(self.label_5, 2, 0, 1, 1)
|
||||||
self.nom_complet = QComboBox(self.gridLayoutWidget_10)
|
self.nom_complet = QComboBox(self.gridLayoutWidget_10)
|
||||||
@@ -271,7 +271,7 @@ class Ui_SICEN(object):
|
|||||||
font.setItalic(True)
|
font.setItalic(True)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.label_13.setFont(font)
|
self.label_13.setFont(font)
|
||||||
self.label_13.setAlignment(QtCore.Qt.AlignCenter)
|
self.label_13.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.label_13.setObjectName(_fromUtf8("label_13"))
|
self.label_13.setObjectName(_fromUtf8("label_13"))
|
||||||
self.gridLayout_11.addWidget(self.label_13, 0, 0, 1, 1)
|
self.gridLayout_11.addWidget(self.label_13, 0, 0, 1, 1)
|
||||||
self.Emprise.addTab(self.tab, _fromUtf8(""))
|
self.Emprise.addTab(self.tab, _fromUtf8(""))
|
||||||
@@ -279,8 +279,8 @@ class Ui_SICEN(object):
|
|||||||
self.tab_3.setObjectName(_fromUtf8("tab_3"))
|
self.tab_3.setObjectName(_fromUtf8("tab_3"))
|
||||||
self.protections = QToolBox(self.tab_3)
|
self.protections = QToolBox(self.tab_3)
|
||||||
self.protections.setGeometry(QtCore.QRect(10, 10, 511, 391))
|
self.protections.setGeometry(QtCore.QRect(10, 10, 511, 391))
|
||||||
self.protections.setFrameShape(QFrame.NoFrame)
|
self.protections.setFrameShape(QFrame.Shape(0))
|
||||||
self.protections.setFrameShadow(QFrame.Plain)
|
self.protections.setFrameShadow(QFrame.Shadow(0x0010))
|
||||||
self.protections.setLineWidth(1)
|
self.protections.setLineWidth(1)
|
||||||
self.protections.setObjectName(_fromUtf8("protections"))
|
self.protections.setObjectName(_fromUtf8("protections"))
|
||||||
self.page_2 = QWidget()
|
self.page_2 = QWidget()
|
||||||
@@ -292,7 +292,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox.setFont(font)
|
self.groupBox.setFont(font)
|
||||||
self.groupBox.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
self.groupBox.setObjectName(_fromUtf8("groupBox"))
|
||||||
self.gridLayoutWidget_2 = QWidget(self.groupBox)
|
self.gridLayoutWidget_2 = QWidget(self.groupBox)
|
||||||
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 491, 88))
|
self.gridLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 491, 88))
|
||||||
@@ -306,7 +306,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRD_38.setFont(font)
|
self.LRD_38.setFont(font)
|
||||||
self.LRD_38.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRD_38.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRD_38.setObjectName(_fromUtf8("LRD_38"))
|
self.LRD_38.setObjectName(_fromUtf8("LRD_38"))
|
||||||
self.gridLayout_2.addWidget(self.LRD_38, 3, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.LRD_38, 3, 0, 1, 1)
|
||||||
self.LRD_01 = QCheckBox(self.gridLayoutWidget_2)
|
self.LRD_01 = QCheckBox(self.gridLayoutWidget_2)
|
||||||
@@ -314,7 +314,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRD_01.setFont(font)
|
self.LRD_01.setFont(font)
|
||||||
self.LRD_01.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRD_01.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRD_01.setObjectName(_fromUtf8("LRD_01"))
|
self.LRD_01.setObjectName(_fromUtf8("LRD_01"))
|
||||||
self.gridLayout_2.addWidget(self.LRD_01, 0, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.LRD_01, 0, 0, 1, 1)
|
||||||
self.LRD_07 = QCheckBox(self.gridLayoutWidget_2)
|
self.LRD_07 = QCheckBox(self.gridLayoutWidget_2)
|
||||||
@@ -322,7 +322,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRD_07.setFont(font)
|
self.LRD_07.setFont(font)
|
||||||
self.LRD_07.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRD_07.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRD_07.setObjectName(_fromUtf8("LRD_07"))
|
self.LRD_07.setObjectName(_fromUtf8("LRD_07"))
|
||||||
self.gridLayout_2.addWidget(self.LRD_07, 1, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.LRD_07, 1, 0, 1, 1)
|
||||||
self.LRD_26 = QCheckBox(self.gridLayoutWidget_2)
|
self.LRD_26 = QCheckBox(self.gridLayoutWidget_2)
|
||||||
@@ -330,7 +330,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRD_26.setFont(font)
|
self.LRD_26.setFont(font)
|
||||||
self.LRD_26.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRD_26.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRD_26.setObjectName(_fromUtf8("LRD_26"))
|
self.LRD_26.setObjectName(_fromUtf8("LRD_26"))
|
||||||
self.gridLayout_2.addWidget(self.LRD_26, 2, 0, 1, 1)
|
self.gridLayout_2.addWidget(self.LRD_26, 2, 0, 1, 1)
|
||||||
self.LRD_42 = QCheckBox(self.gridLayoutWidget_2)
|
self.LRD_42 = QCheckBox(self.gridLayoutWidget_2)
|
||||||
@@ -367,7 +367,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_2.setFont(font)
|
self.groupBox_2.setFont(font)
|
||||||
self.groupBox_2.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_2.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
|
||||||
self.gridLayoutWidget_3 = QWidget(self.groupBox_2)
|
self.gridLayoutWidget_3 = QWidget(self.groupBox_2)
|
||||||
self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 491, 42))
|
self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 491, 42))
|
||||||
@@ -381,7 +381,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRR_Flore.setFont(font)
|
self.LRR_Flore.setFont(font)
|
||||||
self.LRR_Flore.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRR_Flore.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRR_Flore.setObjectName(_fromUtf8("LRR_Flore"))
|
self.LRR_Flore.setObjectName(_fromUtf8("LRR_Flore"))
|
||||||
self.gridLayout_3.addWidget(self.LRR_Flore, 0, 0, 1, 1)
|
self.gridLayout_3.addWidget(self.LRR_Flore, 0, 0, 1, 1)
|
||||||
self.LRR_Oiseaux = QCheckBox(self.gridLayoutWidget_3)
|
self.LRR_Oiseaux = QCheckBox(self.gridLayoutWidget_3)
|
||||||
@@ -389,7 +389,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRR_Oiseaux.setFont(font)
|
self.LRR_Oiseaux.setFont(font)
|
||||||
self.LRR_Oiseaux.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRR_Oiseaux.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRR_Oiseaux.setObjectName(_fromUtf8("LRR_Oiseaux"))
|
self.LRR_Oiseaux.setObjectName(_fromUtf8("LRR_Oiseaux"))
|
||||||
self.gridLayout_3.addWidget(self.LRR_Oiseaux, 1, 0, 1, 1)
|
self.gridLayout_3.addWidget(self.LRR_Oiseaux, 1, 0, 1, 1)
|
||||||
self.LRR_Autre = QCheckBox(self.gridLayoutWidget_3)
|
self.LRR_Autre = QCheckBox(self.gridLayoutWidget_3)
|
||||||
@@ -405,7 +405,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_3.setFont(font)
|
self.groupBox_3.setFont(font)
|
||||||
self.groupBox_3.setAlignment(QtCore.Qt.AlignCenter)
|
self.groupBox_3.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
|
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
|
||||||
self.gridLayoutWidget_4 = QWidget(self.groupBox_3)
|
self.gridLayoutWidget_4 = QWidget(self.groupBox_3)
|
||||||
self.gridLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 491, 42))
|
self.gridLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 491, 42))
|
||||||
@@ -426,7 +426,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRN_Flore.setFont(font)
|
self.LRN_Flore.setFont(font)
|
||||||
self.LRN_Flore.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRN_Flore.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRN_Flore.setObjectName(_fromUtf8("LRN_Flore"))
|
self.LRN_Flore.setObjectName(_fromUtf8("LRN_Flore"))
|
||||||
self.gridLayout_4.addWidget(self.LRN_Flore, 0, 0, 1, 1)
|
self.gridLayout_4.addWidget(self.LRN_Flore, 0, 0, 1, 1)
|
||||||
self.LRN_Oiseaux = QCheckBox(self.gridLayoutWidget_4)
|
self.LRN_Oiseaux = QCheckBox(self.gridLayoutWidget_4)
|
||||||
@@ -434,7 +434,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.LRN_Oiseaux.setFont(font)
|
self.LRN_Oiseaux.setFont(font)
|
||||||
self.LRN_Oiseaux.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.LRN_Oiseaux.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.LRN_Oiseaux.setObjectName(_fromUtf8("LRN_Oiseaux"))
|
self.LRN_Oiseaux.setObjectName(_fromUtf8("LRN_Oiseaux"))
|
||||||
self.gridLayout_4.addWidget(self.LRN_Oiseaux, 1, 0, 1, 1)
|
self.gridLayout_4.addWidget(self.LRN_Oiseaux, 1, 0, 1, 1)
|
||||||
self.LRN_Ortho = QCheckBox(self.gridLayoutWidget_4)
|
self.LRN_Ortho = QCheckBox(self.gridLayoutWidget_4)
|
||||||
@@ -456,7 +456,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.UICN.setFont(font)
|
self.UICN.setFont(font)
|
||||||
self.UICN.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.UICN.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.UICN.setObjectName(_fromUtf8("UICN"))
|
self.UICN.setObjectName(_fromUtf8("UICN"))
|
||||||
self.gridLayout_12.addWidget(self.UICN, 0, 0, 1, 1)
|
self.gridLayout_12.addWidget(self.UICN, 0, 0, 1, 1)
|
||||||
self.LRE = QCheckBox(self.gridLayoutWidget_11)
|
self.LRE = QCheckBox(self.gridLayoutWidget_11)
|
||||||
@@ -485,19 +485,19 @@ class Ui_SICEN(object):
|
|||||||
self.gridLayout.setHorizontalSpacing(50)
|
self.gridLayout.setHorizontalSpacing(50)
|
||||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||||
self.PATRI38 = QCheckBox(self.gridLayoutWidget)
|
self.PATRI38 = QCheckBox(self.gridLayoutWidget)
|
||||||
self.PATRI38.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.PATRI38.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.PATRI38.setObjectName(_fromUtf8("PATRI38"))
|
self.PATRI38.setObjectName(_fromUtf8("PATRI38"))
|
||||||
self.gridLayout.addWidget(self.PATRI38, 3, 0, 1, 1)
|
self.gridLayout.addWidget(self.PATRI38, 3, 0, 1, 1)
|
||||||
self.PATRI01 = QCheckBox(self.gridLayoutWidget)
|
self.PATRI01 = QCheckBox(self.gridLayoutWidget)
|
||||||
self.PATRI01.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.PATRI01.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.PATRI01.setObjectName(_fromUtf8("PATRI01"))
|
self.PATRI01.setObjectName(_fromUtf8("PATRI01"))
|
||||||
self.gridLayout.addWidget(self.PATRI01, 0, 0, 1, 1)
|
self.gridLayout.addWidget(self.PATRI01, 0, 0, 1, 1)
|
||||||
self.PATRI07 = QCheckBox(self.gridLayoutWidget)
|
self.PATRI07 = QCheckBox(self.gridLayoutWidget)
|
||||||
self.PATRI07.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.PATRI07.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.PATRI07.setObjectName(_fromUtf8("PATRI07"))
|
self.PATRI07.setObjectName(_fromUtf8("PATRI07"))
|
||||||
self.gridLayout.addWidget(self.PATRI07, 1, 0, 1, 1)
|
self.gridLayout.addWidget(self.PATRI07, 1, 0, 1, 1)
|
||||||
self.PATRI26 = QCheckBox(self.gridLayoutWidget)
|
self.PATRI26 = QCheckBox(self.gridLayoutWidget)
|
||||||
self.PATRI26.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.PATRI26.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.PATRI26.setObjectName(_fromUtf8("PATRI26"))
|
self.PATRI26.setObjectName(_fromUtf8("PATRI26"))
|
||||||
self.gridLayout.addWidget(self.PATRI26, 2, 0, 1, 1)
|
self.gridLayout.addWidget(self.PATRI26, 2, 0, 1, 1)
|
||||||
self.PATRI42 = QCheckBox(self.gridLayoutWidget)
|
self.PATRI42 = QCheckBox(self.gridLayoutWidget)
|
||||||
@@ -529,7 +529,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
self.groupBox_6.setFont(font)
|
self.groupBox_6.setFont(font)
|
||||||
self.groupBox_6.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
self.groupBox_6.setAlignment(QtCore.Qt.AlignmentFlag(0x0001)|QtCore.Qt.AlignmentFlag(0x0001)|QtCore.Qt.AlignmentFlag(0x0080))
|
||||||
self.groupBox_6.setObjectName(_fromUtf8("groupBox_6"))
|
self.groupBox_6.setObjectName(_fromUtf8("groupBox_6"))
|
||||||
self.gridLayoutWidget_7 = QWidget(self.groupBox_6)
|
self.gridLayoutWidget_7 = QWidget(self.groupBox_6)
|
||||||
self.gridLayoutWidget_7.setGeometry(QtCore.QRect(10, 20, 491, 21))
|
self.gridLayoutWidget_7.setGeometry(QtCore.QRect(10, 20, 491, 21))
|
||||||
@@ -550,7 +550,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.PD_38.setFont(font)
|
self.PD_38.setFont(font)
|
||||||
self.PD_38.setLayoutDirection(QtCore.Qt.RightToLeft)
|
self.PD_38.setLayoutDirection(QtCore.Qt.LayoutDirection(1))
|
||||||
self.PD_38.setObjectName(_fromUtf8("PD_38"))
|
self.PD_38.setObjectName(_fromUtf8("PD_38"))
|
||||||
self.gridLayout_7.addWidget(self.PD_38, 0, 0, 1, 1)
|
self.gridLayout_7.addWidget(self.PD_38, 0, 0, 1, 1)
|
||||||
self.PR = QCheckBox(self.page_3)
|
self.PR = QCheckBox(self.page_3)
|
||||||
@@ -604,14 +604,14 @@ class Ui_SICEN(object):
|
|||||||
self.label_12.setObjectName(_fromUtf8("label_12"))
|
self.label_12.setObjectName(_fromUtf8("label_12"))
|
||||||
self.gridLayout_10.addWidget(self.label_12, 1, 1, 1, 1)
|
self.gridLayout_10.addWidget(self.label_12, 1, 1, 1, 1)
|
||||||
self.buffer = QLineEdit(self.gridLayoutWidget_12)
|
self.buffer = QLineEdit(self.gridLayoutWidget_12)
|
||||||
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
sizePolicy = QSizePolicy(QSizePolicy.Policy(4), QSizePolicy.Policy(0))
|
||||||
sizePolicy.setHorizontalStretch(0)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
sizePolicy.setVerticalStretch(0)
|
sizePolicy.setVerticalStretch(0)
|
||||||
sizePolicy.setHeightForWidth(self.buffer.sizePolicy().hasHeightForWidth())
|
sizePolicy.setHeightForWidth(self.buffer.sizePolicy().hasHeightForWidth())
|
||||||
self.buffer.setSizePolicy(sizePolicy)
|
self.buffer.setSizePolicy(sizePolicy)
|
||||||
self.buffer.setMaximumSize(QtCore.QSize(100, 16777215))
|
self.buffer.setMaximumSize(QtCore.QSize(100, 16777215))
|
||||||
self.buffer.setInputMethodHints(QtCore.Qt.ImhPreferNumbers)
|
self.buffer.setInputMethodHints(QtCore.Qt.InputMethodHint(0x8))
|
||||||
self.buffer.setAlignment(QtCore.Qt.AlignCenter)
|
self.buffer.setAlignment(QtCore.Qt.Alignment(5))
|
||||||
self.buffer.setObjectName(_fromUtf8("buffer"))
|
self.buffer.setObjectName(_fromUtf8("buffer"))
|
||||||
self.gridLayout_10.addWidget(self.buffer, 2, 2, 1, 1)
|
self.gridLayout_10.addWidget(self.buffer, 2, 2, 1, 1)
|
||||||
self.label_8 = QLabel(self.gridLayoutWidget_12)
|
self.label_8 = QLabel(self.gridLayoutWidget_12)
|
||||||
@@ -664,7 +664,7 @@ class Ui_SICEN(object):
|
|||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
font.setWeight(50)
|
font.setWeight(50)
|
||||||
self.bouton_geom.setFont(font)
|
self.bouton_geom.setFont(font)
|
||||||
self.bouton_geom.setLayoutDirection(QtCore.Qt.LeftToRight)
|
self.bouton_geom.setLayoutDirection(QtCore.Qt.LayoutDirection(0))
|
||||||
self.bouton_geom.setText(_fromUtf8(""))
|
self.bouton_geom.setText(_fromUtf8(""))
|
||||||
self.bouton_geom.setIconSize(QtCore.QSize(20, 20))
|
self.bouton_geom.setIconSize(QtCore.QSize(20, 20))
|
||||||
self.bouton_geom.setObjectName(_fromUtf8("bouton_geom"))
|
self.bouton_geom.setObjectName(_fromUtf8("bouton_geom"))
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ Point de départ de tout les plugin du CEN Rhône Alpes,
|
|||||||
Pour la création et le partage :heart:
|
Pour la création et le partage :heart:
|
||||||
|Nom|Version|Statue|Date de création|
|
|Nom|Version|Statue|Date de création|
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
|CenRa_AUTOMAP|0.1.10|Alpha|2024-09-25|
|
|CenRa_AUTOMAP|1.2|Releases|2024-09-25|
|
||||||
|CenRa_COPIE|2.1|Releases|06-02-2024|
|
|CenRa_COPIE|2.2|Releases|06-02-2024|
|
||||||
|CenRa_FLUX|2.2|Releases|06-02-2024|
|
|CenRa_FLUX|2.5|Releases|06-02-2024|
|
||||||
|CenRa_METABASE|0.2.0|Alpha|12-09-2024|
|
|CenRa_METABASE|0.2.0|Alpha|12-09-2024|
|
||||||
|CenRa_PAGERENDER|0.1.5|Alpha|09-10-2024|
|
|CenRa_PAGERENDER|0.1.5|Alpha|09-10-2024|
|
||||||
|CenRa_POSTGIS|2.4|Releases|2024-02-06|
|
|CenRa_POSTGIS|2.6|Releases|2024-02-06|
|
||||||
|CenRa_SICEN|1.8|Releases|06-02-2024|
|
|CenRa_SICEN|1.8|Releases|06-02-2024|
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
|
|||||||
+30
-31
@@ -1,8 +1,7 @@
|
|||||||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
|
||||||
<plugins>
|
<plugins>
|
||||||
<pyqgis_plugin name="CenRa_POSTGIS" version="2.4">
|
<pyqgis_plugin name="CenRa_POSTGIS" version="3.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>2.4</version>
|
<version>3.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_POSTGIS.zip</file_name>
|
<file_name>CenRa_POSTGIS.zip</file_name>
|
||||||
@@ -11,15 +10,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_POSTGIS.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_POSTGIS.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-02-06</create_date>
|
<create_date>2024-02-06</create_date>
|
||||||
<update_date>2025-01-23</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>False</experimental>
|
<experimental>False</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,postgis</tags>
|
<tags>cenra,postgis</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_COPIE" version="2.1">
|
<pyqgis_plugin name="CenRa_COPIE" version="3.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>2.1</version>
|
<version>3.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_COPIE.zip</file_name>
|
<file_name>CenRa_COPIE.zip</file_name>
|
||||||
@@ -28,15 +27,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_COPIE.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_COPIE.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-02-06</create_date>
|
<create_date>2024-02-06</create_date>
|
||||||
<update_date>2025-01-07</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>False</experimental>
|
<experimental>False</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,copie</tags>
|
<tags>cenra,copie</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_SICEN" version="1.8">
|
<pyqgis_plugin name="CenRa_SICEN" version="2.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>1.8</version>
|
<version>2.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_SICEN.zip</file_name>
|
<file_name>CenRa_SICEN.zip</file_name>
|
||||||
@@ -45,15 +44,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_SICEN.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_SICEN.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-02-06</create_date>
|
<create_date>2024-02-06</create_date>
|
||||||
<update_date>2025-01-07</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>False</experimental>
|
<experimental>False</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,sicen</tags>
|
<tags>cenra,sicen</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_FLUX" version="2.2">
|
<pyqgis_plugin name="CenRa_FLUX" version="3.2">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>2.2</version>
|
<version>3.2</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_FLUX.zip</file_name>
|
<file_name>CenRa_FLUX.zip</file_name>
|
||||||
@@ -62,15 +61,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-02-06</create_date>
|
<create_date>2024-02-06</create_date>
|
||||||
<update_date>2025-01-07</update_date>
|
<update_date>2025-07-22</update_date>
|
||||||
<experimental>False</experimental>
|
<experimental>False</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,flux</tags>
|
<tags>cenra,flux</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_METABASE" version="0.1.6">
|
<pyqgis_plugin name="CenRa_METABASE" version="0.3.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>0.1.6</version>
|
<version>0.3.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_METABASE.zip</file_name>
|
<file_name>CenRa_METABASE.zip</file_name>
|
||||||
@@ -79,15 +78,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_METABASE.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_METABASE.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-09-12</create_date>
|
<create_date>2024-09-12</create_date>
|
||||||
<update_date>2025-01-07</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>True</experimental>
|
<experimental>True</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,metabase</tags>
|
<tags>cenra,metabase</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_AUTOMAP" version="0.1.10">
|
<pyqgis_plugin name="CenRa_AUTOMAP" version="2.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>0.1.10</version>
|
<version>2.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_AUTOMAP.zip</file_name>
|
<file_name>CenRa_AUTOMAP.zip</file_name>
|
||||||
@@ -96,15 +95,15 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-09-25</create_date>
|
<create_date>2024-09-25</create_date>
|
||||||
<update_date>2025-01-13</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>False</experimental>
|
<experimental>False</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,mise en page,atlas</tags>
|
<tags>cenra,mise en page,atlas</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_PAGERENDER" version="0.1.5">
|
<pyqgis_plugin name="CenRa_PAGERENDER" version="0.2.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>0.1.5</version>
|
<version>0.2.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
<file_name>CenRa_PAGERENDER.zip</file_name>
|
<file_name>CenRa_PAGERENDER.zip</file_name>
|
||||||
@@ -113,14 +112,14 @@
|
|||||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip</download_url>
|
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip</download_url>
|
||||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||||
<create_date>2024-10-09</create_date>
|
<create_date>2024-10-09</create_date>
|
||||||
<update_date>2025-01-07</update_date>
|
<update_date>2025-05-19</update_date>
|
||||||
<experimental>True</experimental>
|
<experimental>True</experimental>
|
||||||
<deprecated>False</deprecated>
|
<deprecated>False</deprecated>
|
||||||
<tags>cenra,mise en page,atlas</tags>
|
<tags>cenra,mise en page,atlas</tags>
|
||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="CenRa_gn2qgis" version="0.1.0">
|
<pyqgis_plugin name="CenRa_gn2qgis" version="0.1.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>0.1.0</version>
|
<version>0.1.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
@@ -137,7 +136,7 @@
|
|||||||
</pyqgis_plugin>
|
</pyqgis_plugin>
|
||||||
|
|
||||||
<pyqgis_plugin name="BiodivAURA" version="0.1.0">
|
<pyqgis_plugin name="BiodivAURA" version="0.1.0">
|
||||||
<description><![CDATA[Dépôt pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.]]></description>
|
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||||
<version>0.1.0</version>
|
<version>0.1.0</version>
|
||||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||||
|
|||||||
Reference in New Issue
Block a user