Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
728f72cffd | ||
|
|
272b47a174 | ||
|
|
21a652fdb2 | ||
|
|
799a635edc |
@@ -120,7 +120,9 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||
self.comboBox_2.currentIndexChanged.connect(self.bd_source) # Changement de base de données
|
||||
self.checkBox.hide()
|
||||
self.toolButton.clicked.connect(self.getCanevas) # Filtrer par emprise du canevas
|
||||
self.toolButton.setToolTip('Filtrer uniquement les couche Contour/Habitat/Travaux \nqui ce trouve dans le canvas de la carte.')
|
||||
self.toolButton_2.clicked.connect(self.filtre_favorit) # Filtrer par favoris
|
||||
self.toolButton_2.setToolTip('Afficher uniquement les favoris.')
|
||||
layout = QVBoxLayout()
|
||||
self.lineEdit.textChanged.connect(self.filtre_dynamique) # Recherche dynamique
|
||||
layout.addWidget(self.lineEdit)
|
||||
@@ -325,13 +327,36 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||
list_projects_qgis.append(cur.fetchall())
|
||||
|
||||
# Récupération des droits d'accès de l'utilisateur sur les tables
|
||||
SQLGrands = """
|
||||
WITH t as (SELECT
|
||||
n.nspname AS table_schema,
|
||||
c.relname AS table_name,
|
||||
r.rolname AS grantee,
|
||||
CASE
|
||||
WHEN acl_text LIKE '%r%' THEN 'SELECT'
|
||||
WHEN acl_text LIKE '%w%' THEN 'UPDATE'
|
||||
WHEN acl_text LIKE '%a%' THEN 'INSERT'
|
||||
WHEN acl_text LIKE '%d%' THEN 'DELETE'
|
||||
WHEN acl_text LIKE '%x%' THEN 'REFERENCES'
|
||||
ELSE 'OTHER'
|
||||
END AS privilege_type
|
||||
FROM pg_class c
|
||||
JOIN pg_namespace n ON n.oid = c.relnamespace
|
||||
LEFT JOIN LATERAL unnest(c.relacl) AS acl_item(acl) ON TRUE
|
||||
LEFT JOIN LATERAL (
|
||||
SELECT acl::text AS acl_text,
|
||||
split_part(acl::text, '=', 1) AS grantee_name
|
||||
) priv ON TRUE
|
||||
LEFT JOIN pg_roles r ON r.rolname = priv.grantee_name
|
||||
WHERE c.relkind IN ('r', 'v','m'))
|
||||
"""
|
||||
if self.comboBox.currentText() == 'toutes les catégories':
|
||||
SQLGrands = """SELECT concat(table_schema,'.',table_name) FROM information_schema.role_table_grants WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT';"""
|
||||
SQLGrands = SQLGrands + """SELECT concat(table_schema,'.',table_name) FROM t WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT';"""
|
||||
else:
|
||||
if dbtype == sigdb:
|
||||
SQLGrands = """SELECT concat(table_schema,'.',table_name) FROM information_schema.role_table_grants WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT' AND table_schema LIKE '_""" + str(self.comboBox.currentText()) + """_%';"""
|
||||
SQLGrands = SQLGrands + """SELECT concat(table_schema,'.',table_name) FROM t WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT' AND table_schema LIKE '_""" + str(self.comboBox.currentText()) + """_%';"""
|
||||
elif dbtype == refdb:
|
||||
SQLGrands = """SELECT concat(table_schema,'.',table_name) FROM information_schema.role_table_grants WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT' AND table_schema LIKE '""" + str(self.comboBox.currentText()) + """%';"""
|
||||
SQLGrands = SQLGrands + """SELECT concat(table_schema,'.',table_name) FROM t WHERE grantee in(SELECT rolname FROM pg_catalog.pg_roles WHERE oid in(SELECT roleid FROM pg_auth_members WHERE member = (SELECT usesysid FROM pg_catalog.pg_user WHERE usename = '""" + user + """'))) and privilege_type = 'SELECT' AND table_schema LIKE '""" + str(self.comboBox.currentText()) + """%';"""
|
||||
cur.execute(SQLGrands)
|
||||
list_grands = cur.fetchall()
|
||||
GrandUser = []
|
||||
@@ -716,6 +741,22 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||
|
||||
def getCanevas(self):
|
||||
"""Filtre les couches selon l'emprise du canevas QGIS actuel"""
|
||||
|
||||
# Récupération de la liste des favoris de l'utilisateur
|
||||
SQLFavTable = "SELECT concat(schema_name, '.', table_name) FROM admin_sig.favtable WHERE utilisateur LIKE '" + user + "';"
|
||||
if dbtype == refdb:
|
||||
conSIG = psycopg2.connect("host=" + host + " port=" + port + " dbname=" + sigdb + " user=" + user + " password=" + mdp)
|
||||
curSIG = conSIG.cursor(cursor_factory=psycopg2.extras.DictCursor)
|
||||
curSIG.execute(SQLFavTable)
|
||||
list_fav = curSIG.fetchall()
|
||||
conSIG.close()
|
||||
else:
|
||||
cur.execute(SQLFavTable)
|
||||
list_fav = cur.fetchall()
|
||||
FavList = []
|
||||
for favFind in list_fav:
|
||||
FavList.append(favFind[0])
|
||||
|
||||
# Récupération de l'emprise du canevas
|
||||
poly = iface.mapCanvas().extent()
|
||||
geom = (str(poly.xMinimum()) + ',' + str(poly.yMinimum()) + ',' + str(poly.xMaximum()) + ',' + str(poly.yMaximum()))
|
||||
@@ -748,13 +789,28 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||
TableSomme = cur.fetchall()[0][0]
|
||||
|
||||
if e[0][1:3] != 'fo':
|
||||
schema_name = e[0][4:]
|
||||
DepName = QTableWidgetItem(e[0][1:3])
|
||||
SchemaName = QTableWidgetItem(e[0][4:])
|
||||
SchemaName = QTableWidgetItem(schema_name)
|
||||
else:
|
||||
schema_name = e[0][6:]
|
||||
DepName = QTableWidgetItem('form')
|
||||
SchemaName = QTableWidgetItem(e[0][6:])
|
||||
TableName = QTableWidgetItem(e[1][len(e[0]) + 1:])
|
||||
FavoritStatut = QTableWidgetItem('FavIcon')
|
||||
SchemaName = QTableWidgetItem(schema_name)
|
||||
table_name = e[1][len(e[0]) + 1:]
|
||||
TableName = QTableWidgetItem(table_name)
|
||||
|
||||
FavStatut = 0
|
||||
if (schema_name + '.' + table_name) not in FavList:
|
||||
FAV = "mStarIconAdd.png"
|
||||
FavStatut = 0
|
||||
else:
|
||||
FAV = "mStarIconDel.png"
|
||||
FavStatut = 1
|
||||
iconFav = QIcon()
|
||||
iconFav.addPixmap(QtGui.QPixmap(resources_path('icons', FAV)), QIcon.Mode(0), QIcon.State(1))
|
||||
self.FavButton = QPushButton(iconFav, "")
|
||||
self.FavButton.clicked.connect(self.AddOrDelToUserFav)
|
||||
|
||||
self.tableWidget.insertRow(row_count)
|
||||
|
||||
itemIcon = QTableWidgetItem()
|
||||
@@ -766,7 +822,9 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
|
||||
self.tableWidget.setItem(row_count, 1, DepName)
|
||||
self.tableWidget.setItem(row_count, 2, SchemaName)
|
||||
self.tableWidget.setItem(row_count, 3, TableName)
|
||||
self.tableWidget.setItem(row_count, 3, FavoritStatut)
|
||||
item = QTableWidgetItem(str(FavStatut))
|
||||
self.tableWidget.setItem(row_count, 4, item)
|
||||
self.tableWidget.setCellWidget(row_count, 4, self.FavButton)
|
||||
if TableSomme == 0:
|
||||
for j in range(self.tableWidget.columnCount()):
|
||||
self.tableWidget.item(row_count, j).setBackground(QtGui.QColor(246, 185, 73, 50))
|
||||
|
||||
@@ -7,7 +7,7 @@ name=CenRa_FLUX
|
||||
qgisMinimumVersion=3.0
|
||||
supportsQt6=True
|
||||
description=Permet d'ouvrire une table dans la base PostGis
|
||||
version=3.16
|
||||
version=3.18
|
||||
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=<h2>CenRa_FLUX:</h2></br><p><h3>11/02/2026 - Version 3.16: </h3> - Creation de favori et visualisation.</p></br><p><h3>10/02/2026 - Version 3.15: </h3> - Sauvegarde la recherche.</p></br><p><h3>08/12/2025 - Version 3.14: </h3> - message d'erreur pour les drois de couche sur la DB.</p></br><p><h3>08/12/2025 - Version 3.13: </h3> - Detection des droit utilisateur.</p></br><p><h3>25/09/2025 - Version 3.12: </h3> - version +1.</p></br><p><h3>25/09/2025 - Version 3.11: </h3> - Correctife sur les code 00.</p></br><p><h3>24/09/2025 - Version 3.10: </h3> - Erreur sur l ouverture des couche raster. </p></br><p><h3>24/09/2025 - Version 3.9: </h3> - bugfix lier aux extention pgsql.</p></br><p><h3>09/09/2025 - Version 3.8: </h3> - Bug REF fix.</p></br><p><h3>05/09/2025 - Version 3.7: </h3> - Ouverture de projet QGIS contenue dans la base de donnees.</p></br><p><h3>30/07/2025 - Version 3.6: </h3> - Correctife de bug.</p></br><p><h3>29/07/2025 - Version 3.5: </h3> - Bug fix sur les donnee raster.</p></br><p><h3>23/07/2025 - Version 3.4: </h3> - Ouverture raster dans la base SIG.</p></br><p><h3>23/07/2025 - Version 3.3: </h3> - Optimisation des chargement.</p></br><p><h3>22/07/2025 - Version 3.2: </h3> - Visualisation des format raster et vecteur dans REF.</p></br><p><h3>21/07/2025 - Version 3.1: </h3> - Bug fix pour l'ouverture de plus de 5 couches.</p></br><p><h3>19/05/2025 - Version 3.0: </h3> - Compatible PyQt5 et PyQt6.</p></br><p><h3>09/04/2025 - Version 2.9: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 2.8: </h3> - Optimisation pour le TT.</p></br><p><h3>07/04/2025 - Version 2.7: </h3> - mode debug.</p></br><p><h3>03/04/2025 - Version 2.6: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 2.5: </h3> - Visualisation distincte des couches ne se trouvant pas dans l'antenne.</p></br><p><h3>13/02/2025 - Version 2.4: </h3> - Ajoute redimensionnement et déplacement mollette.</p></br><p><h3>05/02/2025 - Version 2.3: </h3> - Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.</p></br><p><h3>07/01/2025 - Version 2.2: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||
changelog=<h2>CenRa_FLUX:</h2></br><p><h3>25/02/2026 - Version 3.18: </h3> - Filtre par secteur geographique compatible avec les favoris.</p></br><p><h3>12/02/2026 - Version 3.17: </h3> - Favorit dans la BD Ref.</p></br><p><h3>11/02/2026 - Version 3.16: </h3> - Creation de favori et visualisation.</p></br><p><h3>10/02/2026 - Version 3.15: </h3> - Sauvegarde la recherche.</p></br><p><h3>08/12/2025 - Version 3.14: </h3> - message d'erreur pour les drois de couche sur la DB.</p></br><p><h3>08/12/2025 - Version 3.13: </h3> - Detection des droit utilisateur.</p></br><p><h3>25/09/2025 - Version 3.12: </h3> - version +1.</p></br><p><h3>25/09/2025 - Version 3.11: </h3> - Correctife sur les code 00.</p></br><p><h3>24/09/2025 - Version 3.10: </h3> - Erreur sur l ouverture des couche raster. </p></br><p><h3>24/09/2025 - Version 3.9: </h3> - bugfix lier aux extention pgsql.</p></br><p><h3>09/09/2025 - Version 3.8: </h3> - Bug REF fix.</p></br><p><h3>05/09/2025 - Version 3.7: </h3> - Ouverture de projet QGIS contenue dans la base de donnees.</p></br><p><h3>30/07/2025 - Version 3.6: </h3> - Correctife de bug.</p></br><p><h3>29/07/2025 - Version 3.5: </h3> - Bug fix sur les donnee raster.</p></br><p><h3>23/07/2025 - Version 3.4: </h3> - Ouverture raster dans la base SIG.</p></br><p><h3>23/07/2025 - Version 3.3: </h3> - Optimisation des chargement.</p></br><p><h3>22/07/2025 - Version 3.2: </h3> - Visualisation des format raster et vecteur dans REF.</p></br><p><h3>21/07/2025 - Version 3.1: </h3> - Bug fix pour l'ouverture de plus de 5 couches.</p></br><p><h3>19/05/2025 - Version 3.0: </h3> - Compatible PyQt5 et PyQt6.</p></br><p><h3>09/04/2025 - Version 2.9: </h3> - Correctif bug en TT.</p></br><p><h3>09/04/2025 - Version 2.8: </h3> - Optimisation pour le TT.</p></br><p><h3>07/04/2025 - Version 2.7: </h3> - mode debug.</p></br><p><h3>03/04/2025 - Version 2.6: </h3> - Mise a jour de securite.</p></br><p><h3>20/03/2025 - Version 2.5: </h3> - Visualisation distincte des couches ne se trouvant pas dans l'antenne.</p></br><p><h3>13/02/2025 - Version 2.4: </h3> - Ajoute redimensionnement et déplacement mollette.</p></br><p><h3>05/02/2025 - Version 2.3: </h3> - Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.</p></br><p><h3>07/01/2025 - Version 2.2: </h3> - ByPass du certif ssl ci erreur.</p></br><p><h3>22/10/2024 - Version 2.1:</h3> - Correctif de bug.</br> - Evolution de la limit de 3 à 5. </br></p></br><p><h3>22/10/2024 - Version 2.0:</h3> - Reformatage du code.</br></p></br><p><h3>03/10/2024 - Version 1.14:</h3> - Remonte la fênetre dans la pille.</br></p><p><h3>13/09/2024 - Version 1.13:</h3>- MAJ sur le lien du changelog</br>- Bug-fix: Ouvre MultiPolygone et Polygon séparément.</p></br><p><h3>10/09/2024 - Version 1.11:</h3>- Ouverture de table contenant plusieurs géométries.</p></br><p><h3>26/08/2024 - Version 1.10:</h3>- Ajoute d'un changelog et vérification de mise à jour.</p>
|
||||
|
||||
# deprecated flag (applies to the whole plugin, not just a single version)
|
||||
deprecated=False
|
||||
|
||||
+3
-3
@@ -50,9 +50,9 @@
|
||||
<tags>cenra,sicen</tags>
|
||||
</pyqgis_plugin>
|
||||
|
||||
<pyqgis_plugin name="CenRa_FLUX" version="3.16">
|
||||
<pyqgis_plugin name="CenRa_FLUX" version="3.18">
|
||||
<description>Depot pour les extensiont QGIS du CEN Rhone-Alpes, sur GitHub.</description>
|
||||
<version>3.16</version>
|
||||
<version>3.18</version>
|
||||
<qgis_minimum_version>3.16</qgis_minimum_version>
|
||||
<homepage>https://plateformesig.cenra-outils.org/</homepage>
|
||||
<file_name>CenRa_FLUX.zip</file_name>
|
||||
@@ -61,7 +61,7 @@
|
||||
<download_url>https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip</download_url>
|
||||
<uploaded_by>CEN-Rhone-Alpes</uploaded_by>
|
||||
<create_date>2024-02-06</create_date>
|
||||
<update_date>2026-02-11</update_date>
|
||||
<update_date>2026-02-25</update_date>
|
||||
<experimental>False</experimental>
|
||||
<deprecated>False</deprecated>
|
||||
<tags>cenra,flux</tags>
|
||||
|
||||
Reference in New Issue
Block a user