diff --git a/.gitignore b/.gitignore
index 34f157f..fd3c009 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,4 +17,5 @@
#ReIgnore
**/__pycache__
**/test/
-PythonSQL.py
\ No newline at end of file
+PythonSQL.py
+StyleLayer.py
\ No newline at end of file
diff --git a/CenRa_AUTOMAP/CenRa_AutoMap.py b/CenRa_AUTOMAP/CenRa_AutoMap.py
index 2040104..f21063e 100644
--- a/CenRa_AUTOMAP/CenRa_AutoMap.py
+++ b/CenRa_AUTOMAP/CenRa_AutoMap.py
@@ -27,8 +27,11 @@ import os
from .tools.resources import (
plugin_path,
resources_path,
+ pyperclip,
maj_verif,
)
+pyperclip()
+
from .canvas_editor import AutoMap_Editor
from .style_invoke import AutoMap_Style
from .about_form import AboutDialog
diff --git a/CenRa_AUTOMAP/metadata.txt b/CenRa_AUTOMAP/metadata.txt
index cfc2a20..6e8eafa 100644
--- a/CenRa_AUTOMAP/metadata.txt
+++ b/CenRa_AUTOMAP/metadata.txt
@@ -6,7 +6,7 @@
name=CenRa_AutoMap
qgisMinimumVersion=3.0
description=CenRa_AutoMap
-version=1.3
+version=1.4
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -21,7 +21,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
hasProcessingProvider=no
# Uncomment the following line and add your changelog:
-changelog=
CenRa_AutoMap:
20/03/2025 - Version 1.3:
- Fenêtre redimensionnable avec déplaçable avec la mollette sourit.25/02/2025 - Version 1.2:
- DockWidget pour ouverture de couche avec theme.28/01/2025 - Version 1.1:
- Multi-Composeur pris en charge.27/01/2025 - Version 1.0:
- Version releases. - Ajoute un message d'avertissement au moment d'écraser la mise en page. - Ajoute prénom et nom dans la réalisation. - Utilisation de Calibri.13/01/2025 - Version 0.1.10:
- Correctif.07/01/2025 - Version 0.1.9:
- ByPass du certif ssl ci erreur.19/12/2024 - Version 0.1.8:
- Nouvelle mise en page. - Incrémentation automatique de nouveau modele de mise en page. - Correctif de bug.21/10/2024 - Version 0.1.7:
- Epurations du code.07/10/2024 - Version 0.1.6:
- Option de bibliotheque de logo custome.03/10/2024 - Version 0.1.5:
- Remonte la fênetre dans la pille. - Gestion du nombre de colonne dans la légend.02/10/2024 - Version 0.1.4:
- Mise en page plein écrant.01/10/2024 - Version 0.1.3:
- Récupération du titre et sous-titre pour mise en page existente. - Integration de bibliotheque de logo. - Integration de gestionaire pour les source de donnée. - Mise en place d'une bar d'echelle adaptative. 30/09/2024 - Version 0.1.2:
- Activation du thème. - Ajouter une carte de suivie. 27/09/2024 - Version 0.1.1:
- Ajout d'une liste déroulante pour les sources de données. - Bouton pour ajouter des fonts de carte customisés. - Fonctionnalité de génération d'atlas. 26/09/2024 - Version 0.1.0:
- Lancement du plugin CenRa_AutoMap avec une seul mise en page.
+changelog=CenRa_AUTOMAP:
03/04/2025 - Version 1.4:
- Mise a jour de securite.20/03/2025 - Version 1.3:
- Fenêtre redimensionnable avec déplaçable avec la mollette sourit.25/02/2025 - Version 1.2:
- DockWidget pour ouverture de couche avec theme.28/01/2025 - Version 1.1:
- Multi-Composeur pris en charge.27/01/2025 - Version 1.0:
- Version releases. - Ajoute un message d'avertissement au moment d'écraser la mise en page. - Ajoute prénom et nom dans la réalisation. - Utilisation de Calibri.13/01/2025 - Version 0.1.10:
- Correctif.07/01/2025 - Version 0.1.9:
- ByPass du certif ssl ci erreur.19/12/2024 - Version 0.1.8:
- Nouvelle mise en page. - Incrémentation automatique de nouveau modele de mise en page. - Correctif de bug.21/10/2024 - Version 0.1.7:
- Epurations du code.07/10/2024 - Version 0.1.6:
- Option de bibliotheque de logo custome.03/10/2024 - Version 0.1.5:
- Remonte la fênetre dans la pille. - Gestion du nombre de colonne dans la légend.02/10/2024 - Version 0.1.4:
- Mise en page plein écrant.01/10/2024 - Version 0.1.3:
- Récupération du titre et sous-titre pour mise en page existente. - Integration de bibliotheque de logo. - Integration de gestionaire pour les source de donnée. - Mise en place d'une bar d'echelle adaptative. 30/09/2024 - Version 0.1.2:
- Activation du thème. - Ajouter une carte de suivie. 27/09/2024 - Version 0.1.1:
- Ajout d'une liste déroulante pour les sources de données. - Bouton pour ajouter des fonts de carte customisés. - Fonctionnalité de génération d'atlas. 26/09/2024 - Version 0.1.0:
- Lancement du plugin CenRa_AutoMap avec une seul mise en page.
# Tags are comma separated with spaces allowed
tags=python
diff --git a/CenRa_AUTOMAP/style_invoke.py b/CenRa_AUTOMAP/style_invoke.py
index db32122..c552a8e 100644
--- a/CenRa_AUTOMAP/style_invoke.py
+++ b/CenRa_AUTOMAP/style_invoke.py
@@ -66,7 +66,12 @@ from PyQt5 import QtWidgets
from qgis.PyQt.QtXml import QDomDocument
from qgis.utils import iface
import glob
-from .tools.PythonSQL import *
+try:
+
+ Enabled = True
+ from .tools.StyleLayer import *
+except:
+ Enabled = False
from .tools.resources import (
load_ui,
resources_path,
diff --git a/CenRa_AUTOMAP/tools/PythonSQL.py b/CenRa_AUTOMAP/tools/PythonSQL.py
deleted file mode 100644
index ae12f34..0000000
--- a/CenRa_AUTOMAP/tools/PythonSQL.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import sys
-import socket
-import os
-
-host = "91.134.194.220"
-port = "5432"
-dbname = "bd_cen"
-
-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'
\ No newline at end of file
diff --git a/CenRa_AUTOMAP/tools/resources.py b/CenRa_AUTOMAP/tools/resources.py
index df100fa..4326324 100644
--- a/CenRa_AUTOMAP/tools/resources.py
+++ b/CenRa_AUTOMAP/tools/resources.py
@@ -4,6 +4,7 @@ import configparser
import shutil
import tempfile
import base64
+import socket
import psycopg2
import psycopg2.extras
from os.path import abspath, join, pardir, dirname
@@ -107,27 +108,20 @@ def load_ui(*args):
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()
+def pyperclip():
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ dst = abspath(abspath(join(plugin_path(), "CenRa_AUTOMAP\\tools\\")))
+ if IPAddr[0:11] == "100.100.100": #4269
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
+ if IPAddr[0:9] == "192.168.0": #01
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
+ if IPAddr[0:9] == "192.168.1": #0726
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\StyleLayer.py'
+ try:
+ 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):
import requests
import json
diff --git a/CenRa_COPIE/CenRa_Copie.py b/CenRa_COPIE/CenRa_Copie.py
index b260d2b..8fc8549 100644
--- a/CenRa_COPIE/CenRa_Copie.py
+++ b/CenRa_COPIE/CenRa_Copie.py
@@ -12,13 +12,15 @@ import qgis
#include
-
+import socket
import os
from .tools.resources import (
plugin_path,
+ pyperclip,
resources_path,
maj_verif,
)
+pyperclip()
from .copie_editor import Copie_Editor
from .about_form import AboutDialog
@@ -66,6 +68,14 @@ class PgCopie:
self.copie_editor = QAction(icon, 'Copie',None)
self.toolBar.addAction(self.copie_editor)
self.copie_editor.triggered.connect(self.open_editor)
+ self.copie_editor.setEnabled(False)
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ if IPAddr[0:11] == "100.100.100":
+ self.copie_editor.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.0":
+ self.copie_editor.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.1":
+ self.copie_editor.setEnabled(True)
def open_about_dialog(self):
"""
diff --git a/CenRa_COPIE/copie_editor.py b/CenRa_COPIE/copie_editor.py
index 482ed32..e38076d 100644
--- a/CenRa_COPIE/copie_editor.py
+++ b/CenRa_COPIE/copie_editor.py
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
from qgis.core import *
from qgis.core import QgsDataSourceUri
-from .tools.PythonSQL import *
+from .tools.PythonSQL import login_base
from .tools.SQLRequet import *
from .tools.resources import (
load_ui,
@@ -62,21 +62,22 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
# tablename
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:
#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)
-
- else :
-
- 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()
+ else:
+ user = account[0]
+ mdp = account[1]
+ host = account[2]
+ port = account[3]
+ dbname = account[4]
+ cur = account[7]
+ con = account[8]
# Creation de la liste des schemas de la base de donnees
SQL = """WITH list_schema AS (
@@ -115,15 +116,15 @@ class Copie_Editor(QDialog, EDITOR_CLASS):
#******************************debut script*********************************
- 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()
+ 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]
+
# Récupération de la couche active
layer = self.iface.activeLayer()
diff --git a/CenRa_COPIE/metadata.txt b/CenRa_COPIE/metadata.txt
index 3b655d5..65932bf 100644
--- a/CenRa_COPIE/metadata.txt
+++ b/CenRa_COPIE/metadata.txt
@@ -10,7 +10,7 @@
name=CenRA_COPIE
qgisMinimumVersion=3.0
description=Permet la copie d'une table dans une base PostGis
-version=2.1
+version=2.2
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -19,7 +19,7 @@ email=si_besoin@cen-rhonealpes.fr
# Recommended items:
# Uncomment the following line and add your changelog:
-changelog=CenRa_COPIE:
07/01/2025 - Version 2.1:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2:
- Refonte du code.13/09/2024 - Version 1.5:
- Ajoute d'un changelog et vérification de mise à jour.
+changelog=CenRa_COPIE:
03/04/2025 - Version 2.2:
- Mise a jour de securite.07/01/2025 - Version 2.1:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2:
- Refonte du code.13/09/2024 - Version 1.5:
- Ajoute d'un changelog et vérification de mise à jour.
# Tags are comma separated with spaces allowed
tags=cenra, database, table
diff --git a/CenRa_COPIE/tools/PythonSQL.py b/CenRa_COPIE/tools/PythonSQL.py
deleted file mode 100644
index 3e91995..0000000
--- a/CenRa_COPIE/tools/PythonSQL.py
+++ /dev/null
@@ -1,33 +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'
\ No newline at end of file
diff --git a/CenRa_COPIE/tools/resources.py b/CenRa_COPIE/tools/resources.py
index ea3ab6b..b7b9a90 100644
--- a/CenRa_COPIE/tools/resources.py
+++ b/CenRa_COPIE/tools/resources.py
@@ -6,6 +6,7 @@ import tempfile
import base64
import psycopg2
import psycopg2.extras
+import socket
from os.path import abspath, join, pardir, dirname
from qgis.PyQt import uic
@@ -107,24 +108,20 @@ def load_ui(*args):
return ui_class
-def login_base(take=None):
- from CenRa_Metabase.resources.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]
+def pyperclip():
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ dst = abspath(abspath(join(plugin_path(), "CenRa_Copie\\tools\\")))
+ if IPAddr[0:11] == "100.100.100": #4269
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.0": #01
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.1": #0726
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ try:
+ shutil.copy(src, dst)
+ except:
+ 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):
import requests
import json
diff --git a/CenRa_FLUX/metadata.txt b/CenRa_FLUX/metadata.txt
index 2b3cba2..32e1940 100644
--- a/CenRa_FLUX/metadata.txt
+++ b/CenRa_FLUX/metadata.txt
@@ -6,7 +6,7 @@
name=CenRa_FLUX
qgisMinimumVersion=3.0
description=Permet d'ouvrire une table dans la base PostGis
-version=2.5
+version=2.6
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -32,7 +32,7 @@ icon=icon.png
# experimental flag
experimental=False
-changelog=CenRA_FLUX:
20/03/2025 - Version 2.5:
- Visualisation distincte des couches ne se trouvant pas dans l'antenne.13/02/2025 - Version 2.4:
- Ajoute redimensionnement et déplacement mollette.05/02/2025 - Version 2.3:
- Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.07/01/2025 - Version 2.2:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2.1:
- Correctif de bug. - Evolution de la limit de 3 à 5. 22/10/2024 - Version 2.0:
- Reformatage du code.03/10/2024 - Version 1.14:
- Remonte la fênetre dans la pille.13/09/2024 - Version 1.13:
- MAJ sur le lien du changelog- Bug-fix: Ouvre MultiPolygone et Polygon séparément.10/09/2024 - Version 1.11:
- Ouverture de table contenant plusieurs géométries.26/08/2024 - Version 1.10:
- Ajoute d'un changelog et vérification de mise à jour.
+changelog=CenRa_FLUX:
03/04/2025 - Version 2.6:
- Mise a jour de securite.20/03/2025 - Version 2.5:
- Visualisation distincte des couches ne se trouvant pas dans l'antenne.13/02/2025 - Version 2.4:
- Ajoute redimensionnement et déplacement mollette.05/02/2025 - Version 2.3:
- Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.07/01/2025 - Version 2.2:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2.1:
- Correctif de bug. - Evolution de la limit de 3 à 5. 22/10/2024 - Version 2.0:
- Reformatage du code.03/10/2024 - Version 1.14:
- Remonte la fênetre dans la pille.13/09/2024 - Version 1.13:
- MAJ sur le lien du changelog- Bug-fix: Ouvre MultiPolygone et Polygon séparément.10/09/2024 - Version 1.11:
- Ouverture de table contenant plusieurs géométries.26/08/2024 - Version 1.10:
- Ajoute d'un changelog et vérification de mise à jour.
# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False
diff --git a/CenRa_METABASE/CenRa_Metabase.py b/CenRa_METABASE/CenRa_Metabase.py
index 11a5573..045f66a 100644
--- a/CenRa_METABASE/CenRa_Metabase.py
+++ b/CenRa_METABASE/CenRa_Metabase.py
@@ -26,9 +26,11 @@ from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
import os
from .tools.resources import (
plugin_path,
+ pyperclip,
resources_path,
maj_verif,
)
+pyperclip()
from .dock import CenRa_Metabase
from .editor import Metabase_Editor
from .about_form import MetabaseAboutDialog
diff --git a/CenRa_METABASE/dock.py b/CenRa_METABASE/dock.py
index 74e1678..e774f19 100644
--- a/CenRa_METABASE/dock.py
+++ b/CenRa_METABASE/dock.py
@@ -47,7 +47,7 @@ from pg_metadata.connection_manager import (
settings_connections_names,
)
'''
-from CenRa_METABASE.tools.PythonSQL import login_base
+from .tools.PythonSQL import login_base
from .tools.resources import (
load_ui,
resources_path,
diff --git a/CenRa_METABASE/editor.py b/CenRa_METABASE/editor.py
index a9c9997..cfc164f 100644
--- a/CenRa_METABASE/editor.py
+++ b/CenRa_METABASE/editor.py
@@ -38,7 +38,7 @@ from qgis.PyQt.QtWidgets import (
)
from qgis.utils import iface
-from CenRa_METABASE.tools.PythonSQL import login_base
+from .tools.PythonSQL import login_base
from .tools.resources import (
load_ui,
resources_path,
diff --git a/CenRa_METABASE/metadata.txt b/CenRa_METABASE/metadata.txt
index 216fdf0..25cb5e6 100644
--- a/CenRa_METABASE/metadata.txt
+++ b/CenRa_METABASE/metadata.txt
@@ -6,7 +6,7 @@
name=CenRa_Metabase
qgisMinimumVersion=3.0
description=CenRa_METABASE
-version=0.2.0
+version=0.2.1
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -21,7 +21,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
hasProcessingProvider=no
# Uncomment the following line and add your changelog:
-changelog=CenRa_Metabase:
07/01/2025 - Version 0.1.6:
- Deployment sur serveur SIG.07/01/2025 - Version 0.1.6:
- ByPass du certif ssl ci erreur19/12/2024 - Version 0.1.5:
- Fix les problem de lenteur qu'en la base est down.12/12/2024 - Version 0.1.4:
- Crash Fix .08/10/2024 - Version 0.1.3:
- Lecture de métadonnée des flux WMS/WFS.07/10/2024 - Version 0.1.2:
- Correctif de bug.03/10/2024 - Version 0.1.1:
- Remonte la fênetre dans la pille.26/08/2024 - Version 0.1.0:
- Lancement du plugin CenRa_Metabase
+changelog=CenRa_METABASE:
03/04/2025 - Version 0.2.1:
- Mise a jour de securite.07/01/2025 - Version 0.2.0:
- Deployment sur serveur SIG.07/01/2025 - Version 0.1.6:
- ByPass du certif ssl ci erreur19/12/2024 - Version 0.1.5:
- Fix les problem de lenteur qu'en la base est down.12/12/2024 - Version 0.1.4:
- Crash Fix .08/10/2024 - Version 0.1.3:
- Lecture de métadonnée des flux WMS/WFS.07/10/2024 - Version 0.1.2:
- Correctif de bug.03/10/2024 - Version 0.1.1:
- Remonte la fênetre dans la pille.26/08/2024 - Version 0.1.0:
- Lancement du plugin CenRa_Metabase
# Tags are comma separated with spaces allowed
tags=python
diff --git a/CenRa_METABASE/tools/PythonSQL.py b/CenRa_METABASE/tools/PythonSQL.py
deleted file mode 100644
index 6358246..0000000
--- a/CenRa_METABASE/tools/PythonSQL.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import sys
-import socket
-import os
-import base64
-import psycopg2
-import psycopg2.extras
-
-IPAddr=socket.gethostbyname(socket.gethostname())
-#print(IPAddr)
-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'
-
-def login_base(take=None):
- 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
\ No newline at end of file
diff --git a/CenRa_METABASE/tools/resources.py b/CenRa_METABASE/tools/resources.py
index 581673d..1bd0ed7 100644
--- a/CenRa_METABASE/tools/resources.py
+++ b/CenRa_METABASE/tools/resources.py
@@ -3,6 +3,7 @@
import configparser
import shutil
import tempfile
+import socket
from os.path import abspath, join, pardir, dirname
from qgis.PyQt.QtWidgets import QApplication
from qgis.PyQt import uic
@@ -91,6 +92,19 @@ def resources_path(*args):
path = abspath(join(path, item))
return path
+def pyperclip():
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ dst = abspath(abspath(join(plugin_path(), "CenRa_METABASE\\tools\\")))
+ if IPAddr[0:11] == "100.100.100": #4269
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.0": #01
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.1": #0726
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ try:
+ shutil.copy(src, dst)
+ except:
+ print('404')
def load_ui(*args):
"""Get compile UI file.
diff --git a/CenRa_PAGERENDER/metadata.txt b/CenRa_PAGERENDER/metadata.txt
index 11ef64b..58ea4fe 100644
--- a/CenRa_PAGERENDER/metadata.txt
+++ b/CenRa_PAGERENDER/metadata.txt
@@ -6,7 +6,7 @@
name=CenRa_PageRender
qgisMinimumVersion=3.0
description=CenRa_PageRender
-version=0.1.5
+version=0.1.6
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -21,7 +21,7 @@ tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
hasProcessingProvider=no
# Uncomment the following line and add your changelog:
-changelog=CenRa_PageRender:
07/01/2025 - Version 0.1.5:
- ByPass du certif ssl ci erreur.14/11/2024 - Version 0.1.4:
- Implementation de la mollet. - Implementation du dragging pour déplacer et modification de la taille 08/11/2024 - Version 0.1.3:
- Correctif de bug. 21/10/2024 - Version 0.1.1:
- Les match en if. - Bouton de scroll et adaptation portrait.09/10/2024 - Version 0.1.0:
- Création.
+changelog=CenRa_PAGERENDER:
03/04/2025 - Version 0.1.6:
- Mise a jour de securite.07/01/2025 - Version 0.1.5:
- ByPass du certif ssl ci erreur.14/11/2024 - Version 0.1.4:
- Implementation de la mollet. - Implementation du dragging pour déplacer et modification de la taille 08/11/2024 - Version 0.1.3:
- Correctif de bug. 21/10/2024 - Version 0.1.1:
- Les match en if. - Bouton de scroll et adaptation portrait.09/10/2024 - Version 0.1.0:
- Création.
# Tags are comma separated with spaces allowed
tags=python
diff --git a/CenRa_PAGERENDER/tools/resources.py b/CenRa_PAGERENDER/tools/resources.py
index d29dce9..a12378e 100644
--- a/CenRa_PAGERENDER/tools/resources.py
+++ b/CenRa_PAGERENDER/tools/resources.py
@@ -106,27 +106,7 @@ def load_ui(*args):
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
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):
import requests
import json
diff --git a/CenRa_POSTGIS/CenRa_Postgis.py b/CenRa_POSTGIS/CenRa_Postgis.py
index 7636fc5..6e893b2 100644
--- a/CenRa_POSTGIS/CenRa_Postgis.py
+++ b/CenRa_POSTGIS/CenRa_Postgis.py
@@ -13,12 +13,16 @@ import qgis
#include
+import socket
import os
from .tools.resources import (
plugin_path,
+ pyperclip,
resources_path,
maj_verif,
)
+pyperclip()
+
from .postgis_editor import Postgis_Editor
from .postgis_creator import Postgis_Creator
from .postgis_rename import Postgis_Rename
@@ -26,6 +30,8 @@ from .about_form import AboutDialog
from PyQt5.QtCore import *
+IPAddr=socket.gethostbyname(socket.gethostname())
+
class PgPostgis:
def __init__(self):
""" Constructor. """
@@ -72,12 +78,30 @@ class PgPostgis:
self.postgis_creator = QAction(icon, 'dossier_creator',None)
self.toolBar.addAction(self.postgis_creator)
self.postgis_creator.triggered.connect(self.open_creator)
+
+ self.postgis_creator.setEnabled(False)
+ if IPAddr[0:11] == "100.100.100":
+ self.postgis_creator.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.0":
+ self.postgis_creator.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.1":
+ self.postgis_creator.setEnabled(True)
+
if not self.action_editor:
self.action_editor = Postgis_Editor()
self.postgis_editor = QAction(icon2, 'dossier_editor',None)
self.toolBar.addAction(self.postgis_editor)
self.postgis_editor.triggered.connect(self.open_editor)
+
+ self.postgis_editor.setEnabled(False)
+ if IPAddr[0:11] == "100.100.100":
+ self.postgis_editor.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.0":
+ self.postgis_editor.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.1":
+ self.postgis_editor.setEnabled(True)
+
if not self.action_rename:
self.action_rename = Postgis_Rename()
@@ -85,14 +109,22 @@ class PgPostgis:
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)
+ 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)
- self.postgis_rename.setVisible(0)
+ if IPAddr[0:11] == "100.100.100":
+ self.postgis_rename.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.0":
+ self.postgis_rename.setEnabled(True)
+ elif IPAddr[0:9] == "192.168.1":
+ self.postgis_rename.setEnabled(True)
def open_about_dialog(self):
"""
diff --git a/CenRa_POSTGIS/metadata.txt b/CenRa_POSTGIS/metadata.txt
index 05aad1c..ff0a04f 100644
--- a/CenRa_POSTGIS/metadata.txt
+++ b/CenRa_POSTGIS/metadata.txt
@@ -12,7 +12,7 @@
name=CenRa_POSTGIS
qgisMinimumVersion=3.0
description=Permet de crée un dossier dans la base PostGis
-version=2.6
+version=2.7
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -21,7 +21,7 @@ email=si_besoin@cen-rhonealpes.fr
# Optional items:
# Uncomment the following line and add your changelog entries:
-changelog=CenRa_POSTGIS:
12/02/2025 - Version 2.6:
- InDev:renomé les schema et table.04/02/2025 - Version 2.5:
- Correctif bug création de couche.23/01/2025 - Version 2.4:
- Correctif sur les pkey.22/01/2025 - Version 2.3:
- Correctif sur la creation de projet.21/01/2025 - Version 2.2:
- Correctif sur la longeur des nom.07/01/2025 - Version 2.1:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2.0:
- Refont du code.
+changelog=CenRa_POSTGIS:
03/04/2025 - Version 2.7:
- Mise a jour de securite.12/02/2025 - Version 2.6:
- InDev:renomé les schema et table.04/02/2025 - Version 2.5:
- Correctif bug création de couche.23/01/2025 - Version 2.4:
- Correctif sur les pkey.22/01/2025 - Version 2.3:
- Correctif sur la creation de projet.21/01/2025 - Version 2.2:
- Correctif sur la longeur des nom.07/01/2025 - Version 2.1:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2.0:
- Refont du code.
# tags are comma separated with spaces allowed
tags=cenra, postgis, database
diff --git a/CenRa_POSTGIS/postgis_creator.py b/CenRa_POSTGIS/postgis_creator.py
index 5001b23..882697a 100644
--- a/CenRa_POSTGIS/postgis_creator.py
+++ b/CenRa_POSTGIS/postgis_creator.py
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
from qgis.core import *
from qgis.core import QgsDataSourceUri
-from .tools.PythonSQL import *
+from .tools.PythonSQL import login_base
from .tools.SQLRequet import *
from .tools.resources import (
@@ -76,15 +76,14 @@ class Postgis_Creator(QDialog, EDITOR_CLASS):
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() )
return
- 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()
+ 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]
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;"
diff --git a/CenRa_POSTGIS/postgis_editor.py b/CenRa_POSTGIS/postgis_editor.py
index ca74b04..a9472b0 100644
--- a/CenRa_POSTGIS/postgis_editor.py
+++ b/CenRa_POSTGIS/postgis_editor.py
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
from qgis.core import *
from qgis.core import QgsDataSourceUri
-from .tools.PythonSQL import *
+from .tools.PythonSQL import login_base
from .tools.SQLRequet import *
from .tools.resources import (
@@ -52,16 +52,14 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
### Outil Ajout de nouvelles couche a un dossier
def raise_(self):
self.activateWindow()
- 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()
+ 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]
# Creation de la liste des schemas de la base de donnees
SQL = """WITH list_schema AS (
select schemaname,'sig' as group from pg_catalog.pg_tables
@@ -92,15 +90,14 @@ class Postgis_Editor(QDialog, EDITOR_CLASS):
# See if OK was pressed
if result == 1:
#******************************debut script*********************************
- 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()
+ 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]
if self.schema.currentIndex() == -1 :
QMessageBox.warning(None, "Oups :", "Veuillez choisir un nom de dossier.")
diff --git a/CenRa_POSTGIS/postgis_rename.py b/CenRa_POSTGIS/postgis_rename.py
index 80bc74f..083ed05 100644
--- a/CenRa_POSTGIS/postgis_rename.py
+++ b/CenRa_POSTGIS/postgis_rename.py
@@ -15,7 +15,7 @@ from PyQt5 import QtGui
from qgis.core import *
from qgis.core import QgsDataSourceUri
-from .tools.PythonSQL import *
+from .tools.PythonSQL import login_base
from .tools.SQLRequet import *
from .tools.resources import (
@@ -39,15 +39,14 @@ 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:
- 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]
- first_conn.close()
- con = psycopg2.connect("host=" + host + " port=" + port + " dbname="+dbname+" user=" + user + " password=" + mdp)
- cur = con.cursor(cursor_factory = psycopg2.extras.DictCursor)
+ 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):
diff --git a/CenRa_POSTGIS/tools/PythonSQL.py b/CenRa_POSTGIS/tools/PythonSQL.py
deleted file mode 100644
index e809b12..0000000
--- a/CenRa_POSTGIS/tools/PythonSQL.py
+++ /dev/null
@@ -1,33 +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'
\ No newline at end of file
diff --git a/CenRa_POSTGIS/tools/resources.py b/CenRa_POSTGIS/tools/resources.py
index 57d5e6e..182546a 100644
--- a/CenRa_POSTGIS/tools/resources.py
+++ b/CenRa_POSTGIS/tools/resources.py
@@ -6,10 +6,10 @@ import tempfile
import base64
import psycopg2
import psycopg2.extras
+import socket
from os.path import abspath, join, pardir, dirname
from qgis.core import QgsDataSourceUri
-from .PythonSQL import *
-
+from .SQLRequet import *
from qgis.PyQt import uic
__copyright__ = "Copyright 2019, 3Liz"
@@ -108,26 +108,21 @@ def load_ui(*args):
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
return ui_class
-'''
-def login_base(take=None):
- from .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)
+def pyperclip():
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ dst = abspath(abspath(join(plugin_path(), "CenRa_POSTGIS\\tools\\")))
+ if IPAddr[0:11] == "100.100.100": #4269
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.0": #01
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.1": #0726
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ try:
+ shutil.copy(src, dst)
+ except:
+ print('404')
- 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):
import requests
import json
@@ -234,7 +229,7 @@ def create_contour(self,schema,cur,con,host ,port ,dbname ,user ,mdp):
uri.setDataSource(schema, tablename, geom)
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
if self.couche_travaux_prevus.isChecked():
#**********Poly
diff --git a/CenRa_SICEN/metadata.txt b/CenRa_SICEN/metadata.txt
index a4fbe96..49510ab 100644
--- a/CenRa_SICEN/metadata.txt
+++ b/CenRa_SICEN/metadata.txt
@@ -12,7 +12,7 @@
name=CenRa SICEN
qgisMinimumVersion=3.0
description=Filtre des données saisies dans SICEN et export d'une liste d'espèces.
-version=1.8
+version=1.9
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -21,7 +21,7 @@ email=si_besoin@cen-rhonealpes.fr
# Optional items:
# Uncomment the following line and add your changelog entries:
-changelog=CenRa_SICEN:
07/01/2025 - Version 1.8:
- ByPass du certif ssl ci erreur.13/09/2024 - Version 1.7:
- Il est maintenant possible de sélectionné plusieurs entité pour le filtre par Emprise.- Ajoute d'un changelog.- Ajoute une vérification de mise à jour.
+changelog=CenRa_SICEN:
03/04/2025 - Version 1.9:
- Mise a jour de securite.07/01/2025 - Version 1.8:
- ByPass du certif ssl ci erreur.13/09/2024 - Version 1.7:
- Il est maintenant possible de sélectionné plusieurs entité pour le filtre par Emprise.- Ajoute d'un changelog.- Ajoute une vérification de mise à jour.
# tags are comma separated with spaces allowed
tags=cenra, postgis, sicen
diff --git a/CenRa_SICEN/sicen.py b/CenRa_SICEN/sicen.py
index 1c1a149..6f4e480 100644
--- a/CenRa_SICEN/sicen.py
+++ b/CenRa_SICEN/sicen.py
@@ -45,8 +45,11 @@ from qgis.PyQt.QtWidgets import QMenu, QAction, QDialog, QDialogButtonBox, QLabe
from . import resources_rc
# Import the code for the dialog
from .sicendialog import SICENDialog
-from .tools.PythonSQL import *
-from .tools.resources import maj_verif
+
+from .tools.resources import maj_verif,pyperclip
+pyperclip()
+from .tools.PythonSQL import login_base
+
import os.path
import qgis
import datetime
@@ -57,7 +60,7 @@ from .forms.about_form import AboutDialog
import psycopg2
import psycopg2.extras
import base64
-#import socket
+import socket
import os
#import sys
@@ -100,6 +103,14 @@ class SICEN(object):
self.action = QAction(
QIcon(":/plugins/sicen/sicen.png"),
u"Ouverture des données SICEN", 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
self.action.triggered.connect(self.ouverture)
@@ -111,6 +122,14 @@ class SICEN(object):
self.action = QAction(
QIcon(":/plugins/sicen/sicen_export.png"),
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
self.action.triggered.connect(self.export)
@@ -146,16 +165,14 @@ class SICEN(object):
# run method that performs all the real work
def ouverture(self):
- 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()
+ 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]
## Creation des listes deroulantes
# Listing de valeur des champs
@@ -255,16 +272,14 @@ class SICEN(object):
# See if OK was pressed
if result == 1:
- 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()
+ 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]
# Requete filtre observateur
if self.dlg.observateur_1.currentIndex() != -1 :
@@ -620,15 +635,14 @@ class SICEN(object):
else :
- 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()
+ 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]
# Creation group de couches
#i = qgis.utils.iface
@@ -753,15 +767,14 @@ class SICEN(object):
else :
- 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()
+ 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]
# Creation group de couches
i = qgis.utils.iface
@@ -862,16 +875,14 @@ class SICEN(object):
buffer = '100'
- 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()
+ 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]
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)
diff --git a/CenRa_SICEN/tools/PythonSQL.py b/CenRa_SICEN/tools/PythonSQL.py
deleted file mode 100644
index 1c64b04..0000000
--- a/CenRa_SICEN/tools/PythonSQL.py
+++ /dev/null
@@ -1,31 +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'
\ No newline at end of file
diff --git a/CenRa_SICEN/tools/resources.py b/CenRa_SICEN/tools/resources.py
index 49226df..ae2fb8c 100644
--- a/CenRa_SICEN/tools/resources.py
+++ b/CenRa_SICEN/tools/resources.py
@@ -3,6 +3,7 @@
import configparser
import shutil
import tempfile
+import socket
import base64
import psycopg2
import psycopg2.extras
@@ -89,7 +90,7 @@ def resources_path(*args):
:return: Absolute path to the resources folder.
:rtype: str
"""
- path = abspath(abspath(join(plugin_path(), "CenRa_Metabase\\tools")))
+ path = abspath(abspath(join(plugin_path(), "CenRa_SICEN\\tools")))
for item in args:
path = abspath(join(path, item))
return path
@@ -106,26 +107,21 @@ def load_ui(*args):
ui_class, _ = uic.loadUiType(resources_path("ui", *args))
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)
+def pyperclip():
+ IPAddr=socket.gethostbyname(socket.gethostname())
+ dst = abspath(abspath(join(plugin_path(), "CenRa_SICEN\\tools\\")))
+ if IPAddr[0:11] == "100.100.100": #4269
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.0": #01
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ if IPAddr[0:9] == "192.168.1": #0726
+ src = '\\\\100.100.100.100\\nuage\\SI_Systeme d information\\Z_QGIS\\PLUGIN\\PythonSQL.py'
+ try:
+ shutil.copy(src, dst)
+ except:
+ print('404')
- 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):
import requests
import json
diff --git a/plugins.xml b/plugins.xml
index 4f3b991..198c5b7 100644
--- a/plugins.xml
+++ b/plugins.xml
@@ -1,8 +1,7 @@
-
-
-
- 2.6
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 2.7
3.16
https://plateformesig.cenra-outils.org/
CenRa_POSTGIS.zip
@@ -11,15 +10,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_POSTGIS.zip
CEN-Rhone-Alpes
2024-02-06
- 2025-02-12
+ 2025-04-03
False
False
cenra,postgis
-
-
- 2.1
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 2.2
3.16
https://plateformesig.cenra-outils.org/
CenRa_COPIE.zip
@@ -28,15 +27,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_COPIE.zip
CEN-Rhone-Alpes
2024-02-06
- 2025-01-07
+ 2025-04-03
False
False
cenra,copie
-
-
- 1.8
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 1.9
3.16
https://plateformesig.cenra-outils.org/
CenRa_SICEN.zip
@@ -45,15 +44,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_SICEN.zip
CEN-Rhone-Alpes
2024-02-06
- 2025-01-07
+ 2025-04-03
False
False
cenra,sicen
-
-
- 2.5
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 2.6
3.16
https://plateformesig.cenra-outils.org/
CenRa_FLUX.zip
@@ -62,15 +61,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip
CEN-Rhone-Alpes
2024-02-06
- 2025-03-20
+ 2025-04-03
False
False
cenra,flux
-
-
- 0.2.0
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 0.2.1
3.16
https://plateformesig.cenra-outils.org/
CenRa_METABASE.zip
@@ -79,15 +78,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_METABASE.zip
CEN-Rhone-Alpes
2024-09-12
- 2025-01-24
+ 2025-04-03
True
False
cenra,metabase
-
-
- 1.3
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 1.4
3.16
https://plateformesig.cenra-outils.org/
CenRa_AUTOMAP.zip
@@ -96,15 +95,15 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_AUTOMAP.zip
CEN-Rhone-Alpes
2024-09-25
- 2025-03-20
+ 2025-04-03
False
False
cenra,mise en page,atlas
-
-
- 0.1.5
+
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
+ 0.1.6
3.16
https://plateformesig.cenra-outils.org/
CenRa_PAGERENDER.zip
@@ -113,14 +112,14 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_PAGERENDER.zip
CEN-Rhone-Alpes
2024-10-09
- 2025-01-07
+ 2025-04-03
True
False
cenra,mise en page,atlas
-
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
0.1.0
3.16
https://plateformesig.cenra-outils.org/
@@ -137,7 +136,7 @@
-
+ Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.
0.1.0
3.16
https://plateformesig.cenra-outils.org/