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 erreur


19/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 erreur


19/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/