From 7b6e77d17ee23e2e63144d1c45650a014d2e8273 Mon Sep 17 00:00:00 2001
From: Tom LAVEILLE
Date: Mon, 7 Oct 2024 17:16:57 +0200
Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?=
=?UTF-8?q?"CenRa=5FMetabase"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CenRa_Metabase/CenRa_Metabase.py | 419 ++++++++++++++++---------------
CenRa_Metabase/editor.py | 10 +-
CenRa_Metabase/metadata.txt | 96 +++----
3 files changed, 273 insertions(+), 252 deletions(-)
diff --git a/CenRa_Metabase/CenRa_Metabase.py b/CenRa_Metabase/CenRa_Metabase.py
index fa85e93..1a61b71 100644
--- a/CenRa_Metabase/CenRa_Metabase.py
+++ b/CenRa_Metabase/CenRa_Metabase.py
@@ -1,199 +1,220 @@
-__copyright__ = "Copyright 2021, 3Liz"
-__license__ = "GPL version 3"
-__email__ = "info@3liz.org"
-
-
-from qgis.core import QgsApplication
-from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
-from qgis.PyQt.QtGui import QDesktopServices, QIcon
-from qgis.PyQt.QtWidgets import QAction, QMessageBox
-from qgis.utils import iface
-'''
-from pg_metadata.connection_manager import (
- store_connections,
- validate_connections_names,
-)
-
-
-from pg_metadata.locator import LocatorFilter
-from pg_metadata.processing.provider import PgMetadataProvider
-from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
-'''
-from CenRa_Metabase.resources.i18n import setup_translation, tr
-import os
-from CenRa_Metabase.resources.resources import (
- plugin_path,
- resources_path,
- maj_verif,
-)
-from CenRa_Metabase.dock import CenRa_Metabase
-from CenRa_Metabase.editor import Metabase_Editor
-#from CenRa_Metabase.issues import CenRa_Issues
-
-
-class PgMetadata:
- def __init__(self):
- """ Constructor. """
- self.dock = None
- self.editor = None
-# self.issues = None
- self.provider = None
- self.locator_filter = None
- self.dock_action = None
- self.help_action = None
- plugin_dir = os.path.dirname(__file__)
- end_find = plugin_dir.rfind('\\')+1
- global NAME
- NAME = plugin_dir[end_find:]
- maj_verif(NAME)
-# setup_logger('pg_metadata')
-
- locale, file_path = setup_translation(
- folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm")
- if file_path:
- self.translator = QTranslator()
- self.translator.load(file_path)
- # noinspection PyCallByClass,PyArgumentList
- QCoreApplication.installTranslator(self.translator)
-
- # noinspection PyPep8Naming
- #def initProcessing(self):
- #""" Add the QGIS Processing provider. """
- #if not self.provider:
- #self.provider = PgMetadataProvider()
- #QgsApplication.processingRegistry().addProvider(self.provider)
-
- # noinspection PyPep8Naming
- def initGui(self):
- """ Build the plugin GUI. """
- #self.initProcessing()
-
- #self.check_invalid_connection_names()
-
- self.toolBar = iface.addToolBar("CenRa_Metabase")
- self.toolBar.setObjectName("CenRa_Metabase")
-
- icon = QIcon(resources_path('icons', 'icon.png'))
- icon2 = QIcon(resources_path('icons', 'icon_2.png'))
-
- # Open the online help
- self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
- iface.pluginHelpMenu().addAction(self.help_action)
- self.help_action.triggered.connect(self.open_help)
- if not self.editor:
- self.editor = Metabase_Editor()
-
-
- self.editor_action = QAction(icon2, 'CenRa_Metabase',None)
- self.toolBar.addAction(self.editor_action)
- self.editor_action.triggered.connect(self.open_editor)
-
- if not self.dock:
- self.dock = CenRa_Metabase()
- iface.addDockWidget(Qt.RightDockWidgetArea, self.dock)
-
- # Open/close the dock from plugin menu
- self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
- iface.pluginMenu().addAction(self.dock_action)
- self.dock_action.triggered.connect(self.open_dock)
-# if not self.issues:
-# self.issues = CenRa_Issues()
-
-
-# self.issues_action = QAction(icon, 'CenRa_Metabase',None)
-# self.toolBar.addAction(self.issues_action)
-# self.issues_action.triggered.connect(self.open_issues)
- '''
- if not self.locator_filter:
- self.locator_filter = LocatorFilter(iface)
- iface.registerLocatorFilter(self.locator_filter)
-
- @staticmethod
- def check_invalid_connection_names():
- """ Check for invalid connection names in the QgsSettings. """
- valid, invalid = validate_connections_names()
- n_invalid = len(invalid)
-
- if n_invalid == 0:
- return
-
- invalid_text = ', '.join(invalid)
- msg = QMessageBox()
- msg.setIcon(QMessageBox.Warning)
- msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
- msg.setText(tr(
- f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or '
- f'no longer available: {invalid_text}'))
- msg.setInformativeText(tr(
- 'Do you want to remove these connection(s) from the PgMetadata settings? '
- '(You can also do this later with the “Set Connections” tool.)'))
- msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
- clicked = msg.exec()
-
- if clicked == QMessageBox.Yes:
- iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
- store_connections(valid)
- if clicked == QMessageBox.No:
- iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
- '''
-
- def open_help():
- """ Open the online help. """
- QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
-
- def open_dock(self):
- """ Open the dock. """
- self.dock.show()
- self.dock.raise_()
-
- def open_editor(self):
- self.editor.show()
- self.editor.raise_()
-
-# def open_issues(self):
-# self.issues.show()
-# self.issues.raise_()
-
- def unload(self):
- """ Unload the plugin. """
- if self.editor:
- iface.removePluginMenu(tr('CenRa_Metabase'),self.editor_action)
- #self.editor.removeToolBarIcon(self.editor_action)
-
-
-
- if self.dock:
- iface.removeDockWidget(self.dock)
- self.dock.deleteLater()
-
- if self.provider:
- QgsApplication.processingRegistry().removeProvider(self.provider)
- del self.provider
-
- if self.locator_filter:
- iface.deregisterLocatorFilter(self.locator_filter)
- del self.locator_filter
-
- if self.dock_action:
- iface.pluginMenu().removeAction(self.dock_action)
- del self.dock_action
-
- if self.help_action:
- iface.pluginHelpMenu().removeAction(self.help_action)
- del self.help_action
-
- @staticmethod
- def run_tests(pattern='test_*.py', package=None):
- """Run the test inside QGIS."""
- try:
- from pathlib import Path
-
- from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import (
- test_package,
- )
- if package is None:
- package = '{}.__init__'.format(Path(__file__).parent.name)
- test_package(package, pattern)
- except (AttributeError, ModuleNotFoundError):
- message = 'Could not load tests. Are you using a production package?'
- print(message) # NOQA
+__copyright__ = "Copyright 2021, 3Liz"
+__license__ = "GPL version 3"
+__email__ = "info@3liz.org"
+
+
+from qgis.core import QgsApplication
+from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
+from qgis.PyQt.QtGui import QDesktopServices, QIcon
+from qgis.PyQt.QtWidgets import QAction, QMessageBox
+from qgis.utils import iface
+import qgis
+
+
+#include
+'''
+from pg_metadata.connection_manager import (
+ store_connections,
+ validate_connections_names,
+)
+
+
+from pg_metadata.locator import LocatorFilter
+from pg_metadata.processing.provider import PgMetadataProvider
+from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
+'''
+import os
+from .tools.resources import (
+ plugin_path,
+ resources_path,
+ maj_verif,
+)
+from .dock import CenRa_Metabase
+from .editor import Metabase_Editor
+from .about_form import MetabaseAboutDialog
+#from CenRa_Metabase.issues import CenRa_Issues
+
+from PyQt5.QtCore import *
+
+
+
+class PgMetadata:
+ def __init__(self):
+ """ Constructor. """
+ self.dock = None
+ self.editor = None
+# self.issues = None
+ self.provider = None
+ self.locator_filter = None
+ self.dock_action = None
+ self.help_action = None
+ plugin_dir = os.path.dirname(__file__)
+ end_find = plugin_dir.rfind('\\')+1
+ global NAME
+ NAME = plugin_dir[end_find:]
+ maj_verif(NAME)
+
+ # Display About window on first use
+ version = qgis.utils.pluginMetadata('CenRa_METABASE','version')
+ s = QSettings()
+ versionUse = s.value("metadata/version", 1, type=str)
+ if str(versionUse) != str(version) :
+ s.setValue("metadata/version", str(version))
+ print(versionUse,version)
+ self.open_about_dialog()
+# setup_logger('pg_metadata')
+
+ #locale, file_path = setup_translation(
+ # folder=plugin_path("i18n"), file_pattern="CenRa_Metabase_{}.qm")
+ #if file_path:
+ # self.translator = QTranslator()
+ # self.translator.load(file_path)
+ # noinspection PyCallByClass,PyArgumentList
+ # QCoreApplication.installTranslator(self.translator)
+
+ # noinspection PyPep8Naming
+ #def initProcessing(self):
+ #""" Add the QGIS Processing provider. """
+ #if not self.provider:
+ #self.provider = PgMetadataProvider()
+ #QgsApplication.processingRegistry().addProvider(self.provider)
+
+ # noinspection PyPep8Naming
+ def initGui(self):
+ """ Build the plugin GUI. """
+ #self.initProcessing()
+
+ #self.check_invalid_connection_names()
+
+ self.toolBar = iface.addToolBar("CenRa_Metabase")
+ self.toolBar.setObjectName("CenRa_Metabase")
+
+ icon = QIcon(resources_path('icons', 'icon.png'))
+ icon2 = QIcon(resources_path('icons', 'icon_2.png'))
+
+ # Open the online help
+ self.help_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
+ iface.pluginHelpMenu().addAction(self.help_action)
+ self.help_action.triggered.connect(self.open_help)
+ if not self.editor:
+ self.editor = Metabase_Editor()
+
+
+ self.editor_action = QAction(icon2, 'CenRa_Metabase',None)
+ self.toolBar.addAction(self.editor_action)
+ self.editor_action.triggered.connect(self.open_editor)
+
+ if not self.dock:
+ self.dock = CenRa_Metabase()
+ iface.addDockWidget(Qt.RightDockWidgetArea, self.dock)
+
+ # Open/close the dock from plugin menu
+ self.dock_action = QAction(icon, 'CenRa_Metabase', iface.mainWindow())
+ iface.pluginMenu().addAction(self.dock_action)
+ self.dock_action.triggered.connect(self.open_dock)
+# if not self.issues:
+# self.issues = CenRa_Issues()
+
+
+# self.issues_action = QAction(icon, 'CenRa_Metabase',None)
+# self.toolBar.addAction(self.issues_action)
+# self.issues_action.triggered.connect(self.open_issues)
+ '''
+ if not self.locator_filter:
+ self.locator_filter = LocatorFilter(iface)
+ iface.registerLocatorFilter(self.locator_filter)
+
+ @staticmethod
+ def check_invalid_connection_names():
+ """ Check for invalid connection names in the QgsSettings. """
+ valid, invalid = validate_connections_names()
+ n_invalid = len(invalid)
+
+ if n_invalid == 0:
+ return
+
+ invalid_text = ', '.join(invalid)
+ msg = QMessageBox()
+ msg.setIcon(QMessageBox.Warning)
+ msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
+ msg.setText(tr(
+ f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or '
+ f'no longer available: {invalid_text}'))
+ msg.setInformativeText(tr(
+ 'Do you want to remove these connection(s) from the PgMetadata settings? '
+ '(You can also do this later with the “Set Connections” tool.)'))
+ msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
+ clicked = msg.exec()
+
+ if clicked == QMessageBox.Yes:
+ iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
+ store_connections(valid)
+ if clicked == QMessageBox.No:
+ iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
+ '''
+ def open_about_dialog(self):
+ """
+ About dialog
+ """
+ dialog = MetabaseAboutDialog(iface)
+ dialog.exec_()
+ def open_help():
+ """ Open the online help. """
+ QDesktopServices.openUrl(QUrl('https://plateformesig.cenra-outils.org/'))
+
+ def open_dock(self):
+ """ Open the dock. """
+ self.dock.show()
+ self.dock.raise_()
+
+ def open_editor(self):
+ self.editor.show()
+ self.editor.raise_()
+
+# def open_issues(self):
+# self.issues.show()
+# self.issues.raise_()
+
+ def unload(self):
+ """ Unload the plugin. """
+ if self.editor:
+ iface.removePluginMenu('CenRa_Metabase',self.editor_action)
+ #self.editor.removeToolBarIcon(self.editor_action)
+
+
+
+ if self.dock:
+ iface.removeDockWidget(self.dock)
+ self.dock.deleteLater()
+
+ if self.provider:
+ QgsApplication.processingRegistry().removeProvider(self.provider)
+ del self.provider
+
+ if self.locator_filter:
+ iface.deregisterLocatorFilter(self.locator_filter)
+ del self.locator_filter
+
+ if self.dock_action:
+ iface.pluginMenu().removeAction(self.dock_action)
+ del self.dock_action
+
+ if self.help_action:
+ iface.pluginHelpMenu().removeAction(self.help_action)
+ del self.help_action
+
+ @staticmethod
+ def run_tests(pattern='test_*.py', package=None):
+ """Run the test inside QGIS."""
+ try:
+ from pathlib import Path
+
+ from pg_metadata.qgis_plugin_tools.infrastructure.test_runner import (
+ test_package,
+ )
+ if package is None:
+ package = '{}.__init__'.format(Path(__file__).parent.name)
+ test_package(package, pattern)
+ except (AttributeError, ModuleNotFoundError):
+ message = 'Could not load tests. Are you using a production package?'
+ print(message) # NOQA
diff --git a/CenRa_Metabase/editor.py b/CenRa_Metabase/editor.py
index 5a7cced..0ca8913 100644
--- a/CenRa_Metabase/editor.py
+++ b/CenRa_Metabase/editor.py
@@ -18,6 +18,7 @@ from qgis.core import (
QgsSettings,
QgsVectorLayer,
QgsGeometry,
+ QgsWkbTypes,
)
from qgis.PyQt.QtCore import QLocale, QUrl, QDateTime
from qgis.PyQt.QtGui import QDesktopServices, QIcon
@@ -35,15 +36,14 @@ from qgis.PyQt.QtWidgets import (
QTableWidgetItem,
)
from qgis.utils import iface
-from CenRa_Metabase.resources.i18n import tr
-from CenRa_Metabase.resources.resources import (
+from .tools.resources import (
load_ui,
resources_path,
login_base,
send_issues,
)
-from CenRa_Metabase.issues import CenRa_Issues
+from .issues import CenRa_Issues
EDITOR_CLASS = load_ui('CenRa_Metabase_editorwidget_base.ui')
LOGGER = logging.getLogger('CenRa_Metabase')
@@ -55,7 +55,6 @@ class Metabase_Editor(QDialog, EDITOR_CLASS):
super().__init__()
self.setupUi(self)
self.settings = QgsSettings()
-
self.import_xml.setAutoRaise(True)
self.import_xml.setText('')
self.import_xml.setIcon(QIcon(QgsApplication.iconPath('mActionAddHtml.svg')))
@@ -207,6 +206,7 @@ class Metabase_Editor(QDialog, EDITOR_CLASS):
iface.layerTreeView().setCurrentLayer(layer)
def raise_(self):
+ self.activateWindow()
global layer
layer = iface.activeLayer()
global uid_delete_list_link,uid_delete_list_contact,array_link,array_contact
@@ -354,7 +354,7 @@ class Metabase_Editor(QDialog, EDITOR_CLASS):
if qgstype != 'Raster' :
count_layers = str(layer.featureCount())
- geomtype = str(layer.wkbType())[8:]
+ geomtype = QgsWkbTypes.displayString(layer.wkbType())
elif qgstype == 'Raster':
count_layers = str(layer.dataProvider().bandCount())
geomtype = qgstype
diff --git a/CenRa_Metabase/metadata.txt b/CenRa_Metabase/metadata.txt
index d0b312c..61bc9b7 100644
--- a/CenRa_Metabase/metadata.txt
+++ b/CenRa_Metabase/metadata.txt
@@ -1,48 +1,48 @@
-# This file contains metadata for your plugin.
-
-# This file should be included when you package your plugin.# Mandatory items:
-
-[general]
-name=CenRa_Metabase
-qgisMinimumVersion=3.0
-description=CenRa_Metabase
-version=1.0
-author=Conservatoire d'Espaces Naturels de Rhône-Alpes
-email=si_besoin@cen-rhonealpes.fr
-
-about=Permet de saisire et de visualisé les information lier à la metadonné d'une couche ce trouvent sur PostgreSQL
-
-repository=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS
-homepage=https://plateformesig.cenra-outils.org/
-tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
-# End of mandatory metadata
-
-# Recommended items:
-
-hasProcessingProvider=no
-# Uncomment the following line and add your changelog:
-# changelog=
-
-# Tags are comma separated with spaces allowed
-tags=python
-
-
-category=Plugins
-icon=icon.png
-# experimental flag
-experimental=False
-
-# deprecated flag (applies to the whole plugin, not just a single version)
-deprecated=False
-
-# Since QGIS 3.8, a comma separated list of plugins to be installed
-# (or upgraded) can be specified.
-# Check the documentation for more information.
-# plugin_dependencies=
-
-Category of the plugin: Raster, Vector, Database or Web
-# category=cenra,database,metadata
-
-# If the plugin can run on QGIS Server.
-server=False
-
+# This file contains metadata for your plugin.
+
+# This file should be included when you package your plugin.# Mandatory items:
+
+[general]
+name=CenRa_Metabase
+qgisMinimumVersion=3.0
+description=CenRa_METABASE
+version=1.2
+author=Conservatoire d'Espaces Naturels de Rhône-Alpes
+email=si_besoin@cen-rhonealpes.fr
+
+about=Permet de saisire et de visualisé les information lier à la metadonné d'une couche ce trouvent sur PostgreSQL
+
+repository=https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS
+homepage=https://plateformesig.cenra-outils.org/
+tracker=https://gitea.cenra-outils.org/api/v1/repos/CEN-RA/Plugin_QGIS/issues
+# End of mandatory metadata
+
+# Recommended items:
+
+hasProcessingProvider=no
+# Uncomment the following line and add your changelog:
+changelog=CenRa_Metabase:
07/10/2024 - Version 1.2:
- Correctif de bug.
03/10/2024 - Version 1.1:
- Remonte la fênetre dans la pille.26/08/2024 - Version 1.0:
- Lancement du plugin CenRa_Metabase
+
+# Tags are comma separated with spaces allowed
+tags=python
+
+
+category=Plugins
+icon=icon.png
+# experimental flag
+experimental=False
+
+# deprecated flag (applies to the whole plugin, not just a single version)
+deprecated=False
+
+# Since QGIS 3.8, a comma separated list of plugins to be installed
+# (or upgraded) can be specified.
+# Check the documentation for more information.
+# plugin_dependencies=
+
+Category of the plugin: Raster, Vector, Database or Web
+# category=cenra,database,metadata
+
+# If the plugin can run on QGIS Server.
+server=False
+