diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..778e2bc
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,16 @@
+repos:
+ - repo: https://github.com/psf/black
+ rev: 22.10.0
+ hooks:
+ - id: black
+ language_version: python3
+ args:
+ - --line-length=120
+
+ - repo: https://github.com/pycqa/flake8
+ rev: 6.0.0
+ hooks:
+ - id: flake8
+ args:
+ - --ignore=E203,E402,E501,W291,W503
+ - --max-line-length=120
\ No newline at end of file
diff --git a/document_management_system/__init__.py b/document_management_system/__init__.py
index 8bce63e..8449362 100644
--- a/document_management_system/__init__.py
+++ b/document_management_system/__init__.py
@@ -15,5 +15,8 @@ def classFactory(iface):
:type iface: QgsInterface
"""
#
- from document_management_system.core.document_management_system_relation_editor_plugin import DocumentManagementSystemRelationEditorPlugin
+ from document_management_system.core.document_management_system_relation_editor_plugin import (
+ DocumentManagementSystemRelationEditorPlugin,
+ )
+
return DocumentManagementSystemRelationEditorPlugin(iface)
diff --git a/document_management_system/core/document_management_system_relation_editor_plugin.py b/document_management_system/core/document_management_system_relation_editor_plugin.py
index 9b1c8c6..0470d8d 100644
--- a/document_management_system/core/document_management_system_relation_editor_plugin.py
+++ b/document_management_system/core/document_management_system_relation_editor_plugin.py
@@ -10,21 +10,21 @@
import os
from qgis.PyQt.QtCore import QCoreApplication, QTranslator, QObject, QLocale, QSettings
-from qgis.PyQt.QtGui import QIcon
-from qgis.PyQt.QtWidgets import QAction
from qgis.core import QgsApplication
-from qgis.gui import (
- QgisInterface,
- QgsGui
-)
+from qgis.gui import QgisInterface, QgsGui
from document_management_system.core.settings_registry import SettingsRegistry
-from document_management_system.gui.relation_editor_feature_side_widget_factory import RelationEditorFeatureSideWidgetFactory
-from document_management_system.gui.relation_editor_document_side_widget_factory import RelationEditorDocumentSideWidgetFactory
+from document_management_system.gui.relation_editor_feature_side_widget_factory import (
+ RelationEditorFeatureSideWidgetFactory,
+)
+from document_management_system.gui.relation_editor_document_side_widget_factory import (
+ RelationEditorDocumentSideWidgetFactory,
+)
DEBUG = True
+
class DocumentManagementSystemRelationEditorPlugin(QObject):
plugin_name = "&Document Management System Relation Editor"
@@ -34,28 +34,27 @@ def __init__(self, interface: QgisInterface):
self.interface = interface
# initialize translation
- qgis_locale = QLocale(QSettings().value('locale/userLocale'))
- locale_path = os.path.join(os.path.dirname(__file__), 'i18n')
+ qgis_locale = QLocale(QSettings().value("locale/userLocale"))
+ locale_path = os.path.join(os.path.dirname(__file__), "i18n")
self.translator = QTranslator()
- self.translator.load(qgis_locale, 'actions_for_relations', '_', locale_path)
+ self.translator.load(qgis_locale, "actions_for_relations", "_", locale_path)
QCoreApplication.installTranslator(self.translator)
self.actions = []
- self.MENU_ITEM_NAME = self.tr('&Document management system')
+ self.MENU_ITEM_NAME = self.tr("&Document management system")
# Plugin settings
self.settingsRegistry = SettingsRegistry()
QgsApplication.settingsRegistryCore().addSubRegistry(self.settingsRegistry)
- def initGui(self):
+ def initGui(self):
QgsGui.relationWidgetRegistry().addRelationWidget(RelationEditorFeatureSideWidgetFactory())
QgsGui.relationWidgetRegistry().addRelationWidget(RelationEditorDocumentSideWidgetFactory())
def unload(self):
# Removes the plugin menu item
for action in self.actions:
- self.interface.removePluginMenu(self.MENU_ITEM_NAME,
- action)
+ self.interface.removePluginMenu(self.MENU_ITEM_NAME, action)
QgsGui.relationWidgetRegistry().removeRelationWidget(RelationEditorFeatureSideWidgetFactory.type())
QgsGui.relationWidgetRegistry().removeRelationWidget(RelationEditorDocumentSideWidgetFactory.type())
diff --git a/document_management_system/core/document_model.py b/document_management_system/core/document_model.py
index d438c69..c6a3906 100644
--- a/document_management_system/core/document_model.py
+++ b/document_management_system/core/document_model.py
@@ -9,20 +9,18 @@
# -----------------------------------------------------------
from enum import Enum
-from qgis.PyQt.QtCore import (
- Qt,
- QObject,
- QAbstractTableModel,
- QModelIndex,
- QFileInfo,
- QDir,
- QSysInfo,
- QUrl
+from qgis.PyQt.QtCore import Qt, QObject, QAbstractTableModel, QModelIndex, QFileInfo, QDir
+from qgis.core import (
+ QgsRelation,
+ QgsFeature,
+ QgsExpression,
+ QgsExpressionContext,
+ QgsExpressionContextUtils,
+ QgsFeatureRequest,
)
-from qgis.PyQt.QtGui import QIcon
-from qgis.core import QgsRelation, QgsFeature, QgsExpression, QgsExpressionContext, QgsExpressionContextUtils, QgsFeatureRequest
from document_management_system.core.preview_image_provider import PreviewImageProvider
+
class Role(Enum):
RelationRole = Qt.UserRole + 1
RelationIdRole = Qt.UserRole + 2
@@ -32,10 +30,10 @@ class Role(Enum):
class DocumentModel(QAbstractTableModel):
- DocumentIdRole = Qt.UserRole + 1
- DocumentPathRole = Qt.UserRole + 2
- DocumentNameRole = Qt.UserRole + 3
- DocumentExistsRole = Qt.UserRole + 4
+ DocumentIdRole = Qt.UserRole + 1
+ DocumentPathRole = Qt.UserRole + 2
+ DocumentNameRole = Qt.UserRole + 3
+ DocumentExistsRole = Qt.UserRole + 4
DocumentToolTipRole = Qt.UserRole + 5
DocumentIsImageRole = Qt.UserRole + 6
@@ -48,12 +46,14 @@ def __init__(self, parent: QObject = None):
self._feature = QgsFeature()
self._document_list = []
- def init(self,
- relation: QgsRelation,
- nmRelation: QgsRelation,
- feature: QgsFeature,
- documents_path: str,
- document_filename: str):
+ def init(
+ self,
+ relation: QgsRelation,
+ nmRelation: QgsRelation,
+ feature: QgsFeature,
+ documents_path: str,
+ document_filename: str,
+ ):
self._relation = relation
self._nmRelation = nmRelation
self._documents_path = documents_path
@@ -88,12 +88,12 @@ def setData(self, index: QModelIndex, value, role: int = Qt.EditRole) -> bool:
def roleNames(self):
return {
- self.DocumentIdRole: b'DocumentId',
- self.DocumentPathRole: b'DocumentPath',
- self.DocumentNameRole: b'DocumentName',
- self.DocumentExistsRole: b'DocumentExists',
- self.DocumentToolTipRole: b'DocumentToolTip',
- self.DocumentIsImageRole: b'DocumentIsImage'
+ self.DocumentIdRole: b"DocumentId",
+ self.DocumentPathRole: b"DocumentPath",
+ self.DocumentNameRole: b"DocumentName",
+ self.DocumentExistsRole: b"DocumentExists",
+ self.DocumentToolTipRole: b"DocumentToolTip",
+ self.DocumentIsImageRole: b"DocumentIsImage",
}
def reloadData(self):
@@ -141,25 +141,27 @@ def reloadData(self):
context.appendScopes(QgsExpressionContextUtils.globalProjectLayerScopes(layer))
context.setFeature(documentFeature)
document_filename = exp.evaluate(context)
- file_info = QFileInfo(QDir(str(documents_path)),
- str(document_filename))
+ file_info = QFileInfo(QDir(str(documents_path)), str(document_filename))
# ToolTip
toolTipList = []
toolTipList.append("
")
for field in documentFeature.fields():
index = documentFeature.fields().indexFromName(field.name())
- toolTipList.append("- {0}: {1}
".format(field.displayName(),
- documentFeature[index]))
+ toolTipList.append(
+ "- {0}: {1}
".format(field.displayName(), documentFeature[index])
+ )
toolTipList.append("
")
- self._document_list.append({
- self.DocumentIdRole: documentFeature.id(),
- self.DocumentPathRole: file_info.filePath(),
- self.DocumentNameRole: file_info.fileName(),
- self.DocumentExistsRole: file_info.exists(),
- self.DocumentToolTipRole: "".join(toolTipList),
- self.DocumentIsImageRole: PreviewImageProvider.isMimeTypeSupported(file_info.filePath())
- })
+ self._document_list.append(
+ {
+ self.DocumentIdRole: documentFeature.id(),
+ self.DocumentPathRole: file_info.filePath(),
+ self.DocumentNameRole: file_info.fileName(),
+ self.DocumentExistsRole: file_info.exists(),
+ self.DocumentToolTipRole: "".join(toolTipList),
+ self.DocumentIsImageRole: PreviewImageProvider.isMimeTypeSupported(file_info.filePath()),
+ }
+ )
self.endResetModel()
diff --git a/document_management_system/core/file_type_icon_image_provider.py b/document_management_system/core/file_type_icon_image_provider.py
index 0d74148..9346dfb 100644
--- a/document_management_system/core/file_type_icon_image_provider.py
+++ b/document_management_system/core/file_type_icon_image_provider.py
@@ -10,12 +10,10 @@
from PyQt5.QtQuick import QQuickImageProvider
from qgis.PyQt.QtCore import QFileInfo
-from qgis.PyQt.QtGui import QPixmap
from qgis.PyQt.QtWidgets import QFileIconProvider
class FileTypeIconImageProvider(QQuickImageProvider):
-
def __init__(self, maxSize):
super().__init__(QQuickImageProvider.Pixmap)
diff --git a/document_management_system/core/plugin_helper.py b/document_management_system/core/plugin_helper.py
index 04eddd7..4a3b38f 100644
--- a/document_management_system/core/plugin_helper.py
+++ b/document_management_system/core/plugin_helper.py
@@ -29,8 +29,7 @@ def tr(message):
:rtype: QString
"""
# noinspection PyTypeChecker,PyArgumentList,PyCallByClass
- return QCoreApplication.translate(PluginHelper.PLUGIN_SLUG,
- message)
+ return QCoreApplication.translate(PluginHelper.PLUGIN_SLUG, message)
@staticmethod
def removeLayerIdOrName(layerUri):
@@ -38,7 +37,7 @@ def removeLayerIdOrName(layerUri):
for toRemove in ["|layername=", "|layerid="]:
pos = layerUri.find(toRemove)
if pos >= 0:
- end = layerUri.find('|', pos + 1)
+ end = layerUri.find("|", pos + 1)
if end >= 0:
layerUriStripped = layerUri[pos:end]
else:
@@ -56,4 +55,3 @@ def connectionString(layerUri):
connString = PluginHelper.removeLayerIdOrName(layerUri)
return connString
-
diff --git a/document_management_system/core/preview_image_provider.py b/document_management_system/core/preview_image_provider.py
index b010751..7d5109f 100644
--- a/document_management_system/core/preview_image_provider.py
+++ b/document_management_system/core/preview_image_provider.py
@@ -10,10 +10,7 @@
from PyQt5.QtQuick import QQuickImageProvider
from qgis.PyQt.QtCore import QMimeDatabase
-from qgis.PyQt.QtGui import (
- QImage,
- QImageReader
-)
+from qgis.PyQt.QtGui import QImageReader
class PreviewImageProvider(QQuickImageProvider):
diff --git a/document_management_system/core/settings_registry.py b/document_management_system/core/settings_registry.py
index 8631784..0862049 100644
--- a/document_management_system/core/settings_registry.py
+++ b/document_management_system/core/settings_registry.py
@@ -13,7 +13,6 @@
class SettingsRegistry(QgsSettingsRegistry):
-
def __init__(self):
super().__init__()
diff --git a/document_management_system/gui/relation_editor_document_side_config_widget.py b/document_management_system/gui/relation_editor_document_side_config_widget.py
index 270f3e4..8e53a6f 100644
--- a/document_management_system/gui/relation_editor_document_side_config_widget.py
+++ b/document_management_system/gui/relation_editor_document_side_config_widget.py
@@ -13,12 +13,12 @@
from qgis.core import QgsProject
from qgis.gui import QgsAbstractRelationEditorConfigWidget
-WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__),
- '../ui/relation_editor_document_side_config_widget.ui'))
+WidgetUi, _ = loadUiType(
+ os.path.join(os.path.dirname(__file__), "../ui/relation_editor_document_side_config_widget.ui")
+)
class RelationEditorDocumentSideConfigWidget(QgsAbstractRelationEditorConfigWidget, WidgetUi):
-
def __init__(self, relation, parent):
super().__init__(relation, parent)
self.setupUi(self)
@@ -27,28 +27,32 @@ def __init__(self, relation, parent):
for polymorphicRelationId in polymorphicRelations:
polymorphicRelationReferencingLayer = polymorphicRelations[polymorphicRelationId].referencingLayer()
if (
- polymorphicRelationReferencingLayer.id() == relation.referencingLayer().id() or
- polymorphicRelationReferencingLayer.id() == relation.referencedLayer().id()
- ):
- self.mPolymorphicRelationComboBox.addItem(polymorphicRelations[polymorphicRelationId].name(), polymorphicRelationId)
+ polymorphicRelationReferencingLayer.id() == relation.referencingLayer().id()
+ or polymorphicRelationReferencingLayer.id() == relation.referencedLayer().id()
+ ):
+ self.mPolymorphicRelationComboBox.addItem(
+ polymorphicRelations[polymorphicRelationId].name(), polymorphicRelationId
+ )
if len(polymorphicRelations) == 0:
self.mPolymorphicRelationGroupBox.setEnabled(False)
- self.mPolymorphicRelationGroupBox.setToolTip(self.tr('There are no polymorphic relations defined in current project'))
+ self.mPolymorphicRelationGroupBox.setToolTip(
+ self.tr("There are no polymorphic relations defined in current project")
+ )
def config(self):
return {
- 'polymorphic_relation_enabled': self.mPolymorphicRelationGroupBox.isChecked(),
- 'polymorphic_relation_id': self.mPolymorphicRelationComboBox.currentData(),
+ "polymorphic_relation_enabled": self.mPolymorphicRelationGroupBox.isChecked(),
+ "polymorphic_relation_id": self.mPolymorphicRelationComboBox.currentData(),
}
def setConfig(self, config):
- configPolymorphicRelationEnabled = config.get('polymorphic_relation_enabled')
+ configPolymorphicRelationEnabled = config.get("polymorphic_relation_enabled")
if configPolymorphicRelationEnabled is None:
configPolymorphicRelationEnabled = False
self.mPolymorphicRelationGroupBox.setChecked(configPolymorphicRelationEnabled)
- polymorphicRelationId = config.get('polymorphic_relation_id')
+ polymorphicRelationId = config.get("polymorphic_relation_id")
polymorphicRelation = QgsProject.instance().relationManager().polymorphicRelation(polymorphicRelationId)
self.mPolymorphicRelationComboBox.setCurrentText(polymorphicRelation.name())
pass
@@ -59,7 +63,9 @@ def setNmRelation(self, nmRelation):
if nmRelation.isValid():
self.mPolymorphicRelationGroupBox.setEnabled(False)
- self.mPolymorphicRelationGroupBox.setToolTip(self.tr('Polymorphic relation available only for cardinality "Many to one"'))
+ self.mPolymorphicRelationGroupBox.setToolTip(
+ self.tr('Polymorphic relation available only for cardinality "Many to one"')
+ )
else:
self.mPolymorphicRelationGroupBox.setEnabled(True)
self.mPolymorphicRelationGroupBox.setToolTip("")
diff --git a/document_management_system/gui/relation_editor_document_side_widget.py b/document_management_system/gui/relation_editor_document_side_widget.py
index 911fbec..bde0cd4 100644
--- a/document_management_system/gui/relation_editor_document_side_widget.py
+++ b/document_management_system/gui/relation_editor_document_side_widget.py
@@ -9,22 +9,10 @@
# -----------------------------------------------------------
import os
-from enum import (
- Enum,
- IntEnum
-)
-from qgis.PyQt.QtCore import (
- Qt,
- QTimer,
- pyqtSlot
-)
+from enum import Enum, IntEnum
+from qgis.PyQt.QtCore import Qt, QTimer, pyqtSlot
from qgis.PyQt.QtGui import QIcon
-from qgis.PyQt.QtWidgets import (
- QAction,
- QInputDialog,
- QMessageBox,
- QTreeWidgetItem
-)
+from qgis.PyQt.QtWidgets import QAction, QInputDialog, QMessageBox, QTreeWidgetItem
from qgis.PyQt.uic import loadUiType
from qgis.core import (
QgsProject,
@@ -34,16 +22,12 @@
QgsFeature,
QgsFeatureRequest,
QgsIconUtils,
- QgsVectorLayerUtils
-)
-from qgis.gui import (
- QgsAbstractRelationEditorWidget,
- QgsAttributeDialog,
- QgsFeatureSelectionDlg
+ QgsVectorLayerUtils,
)
+from qgis.gui import QgsAbstractRelationEditorWidget, QgsAttributeDialog, QgsFeatureSelectionDlg
from document_management_system.core.plugin_helper import PluginHelper
-WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), '../ui/relation_editor_document_side_widget.ui'))
+WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), "../ui/relation_editor_document_side_widget.ui"))
class Cardinality(Enum):
@@ -66,7 +50,6 @@ class TreeWidgetItemRole(IntEnum):
class RelationEditorDocumentSideWidget(QgsAbstractRelationEditorWidget, WidgetUi):
-
def __init__(self, config, parent):
super().__init__(config, parent)
self._updateUiTimer = QTimer()
@@ -86,17 +69,18 @@ def __init__(self, config, parent):
self.cardinality = Cardinality.ManyToOne
# Actions
- self.actionToggleEditing = QAction(QIcon(":/images/themes/default/mActionToggleEditing.svg"),
- self.tr("Toggle editing mode for child layers"))
+ self.actionToggleEditing = QAction(
+ QIcon(":/images/themes/default/mActionToggleEditing.svg"), self.tr("Toggle editing mode for child layers")
+ )
self.actionToggleEditing.setCheckable(True)
- self.actionSaveEdits = QAction(QIcon(":/images/themes/default/mActionSaveEdits.svg"),
- self.tr("Save child layer edits"))
- self.actionShowForm = QAction(QIcon(":/images/themes/default/mActionMultiEdit.svg"),
- self.tr("Show form"))
- self.actionLinkFeature = QAction(QIcon(":/images/themes/default/mActionLink.svg"),
- self.tr("Link feature"))
- self.actionUnlinkFeature = QAction(QIcon(":/images/themes/default/mActionUnlink.svg"),
- self.tr("Unlink feature"))
+ self.actionSaveEdits = QAction(
+ QIcon(":/images/themes/default/mActionSaveEdits.svg"), self.tr("Save child layer edits")
+ )
+ self.actionShowForm = QAction(QIcon(":/images/themes/default/mActionMultiEdit.svg"), self.tr("Show form"))
+ self.actionLinkFeature = QAction(QIcon(":/images/themes/default/mActionLink.svg"), self.tr("Link feature"))
+ self.actionUnlinkFeature = QAction(
+ QIcon(":/images/themes/default/mActionUnlink.svg"), self.tr("Unlink feature")
+ )
# Tool buttons
self.mToggleEditingToolButton.setDefaultAction(self.actionToggleEditing)
@@ -128,18 +112,18 @@ def nmRelation(self):
return self._nmRelation
def config(self):
- return {
-
- }
+ return {}
def setConfig(self, config):
- self.polymorphicRelationEnabled = config['polymorphic_relation_enabled']
- self.polymorphicRelationId = config['polymorphic_relation_id']
+ self.polymorphicRelationEnabled = config["polymorphic_relation_enabled"]
+ self.polymorphicRelationId = config["polymorphic_relation_id"]
if self.polymorphicRelationEnabled is False:
return
- self._polymorphicRelation = QgsProject.instance().relationManager().polymorphicRelation(self.polymorphicRelationId)
+ self._polymorphicRelation = (
+ QgsProject.instance().relationManager().polymorphicRelation(self.polymorphicRelationId)
+ )
self._setCardinality()
@@ -147,7 +131,7 @@ def updateUi(self):
self._updateUiTimer.start(200)
def updateUiTimeout(self):
- print('DocumentRelationEditorDocumentSideWidget.updateUiTimeout')
+ print("DocumentRelationEditorDocumentSideWidget.updateUiTimeout")
self.mFeaturesTreeWidget.clear()
@@ -170,7 +154,9 @@ def updateUiManyToOne(self):
layer = self.relation().referencingLayer()
request = self.relation().getRelatedFeaturesRequest(self.feature())
for feature in layer.getFeatures(request):
- treeWidgetItem = QTreeWidgetItem(self.mFeaturesTreeWidget, [QgsVectorLayerUtils.getFeatureDisplayString(layer, feature)])
+ treeWidgetItem = QTreeWidgetItem(
+ self.mFeaturesTreeWidget, [QgsVectorLayerUtils.getFeatureDisplayString(layer, feature)]
+ )
treeWidgetItem.setData(0, TreeWidgetItemRole.Type, TreeWidgetItemType.Feature)
treeWidgetItem.setData(0, TreeWidgetItemRole.Layer, layer)
treeWidgetItem.setData(0, TreeWidgetItemRole.Feature, feature)
@@ -189,7 +175,9 @@ def updateUiManyToMany(self):
finalLayer = self.nmRelation().referencedLayer()
for finalFeature in finalLayer.getFeatures(nmRequest):
- treeWidgetItem = QTreeWidgetItem(self.mFeaturesTreeWidget, [QgsVectorLayerUtils.getFeatureDisplayString(finalLayer, finalFeature)])
+ treeWidgetItem = QTreeWidgetItem(
+ self.mFeaturesTreeWidget, [QgsVectorLayerUtils.getFeatureDisplayString(finalLayer, finalFeature)]
+ )
treeWidgetItem.setData(0, TreeWidgetItemRole.Type, TreeWidgetItemType.Feature)
treeWidgetItem.setData(0, TreeWidgetItemRole.Layer, finalLayer)
treeWidgetItem.setData(0, TreeWidgetItemRole.Feature, feature)
@@ -212,7 +200,9 @@ def updateUiManyToOnePolymorphic(self):
treeWidgetItemLayer.setData(0, TreeWidgetItemRole.Layer, layer)
treeWidgetItemLayer.setIcon(0, QgsIconUtils.iconForLayer(layer))
for feature in layerFeature[layer]:
- treeWidgetItem = QTreeWidgetItem(treeWidgetItemLayer, [QgsVectorLayerUtils.getFeatureDisplayString(layerFeature, feature)])
+ treeWidgetItem = QTreeWidgetItem(
+ treeWidgetItemLayer, [QgsVectorLayerUtils.getFeatureDisplayString(layerFeature, feature)]
+ )
treeWidgetItem.setData(0, TreeWidgetItemRole.Type, TreeWidgetItemType.Feature)
treeWidgetItem.setData(0, TreeWidgetItemRole.Layer, layer)
treeWidgetItem.setData(0, TreeWidgetItemRole.Feature, feature)
@@ -243,7 +233,9 @@ def updateUiManyToManyPolymorphic(self):
treeWidgetItemLayer.setData(0, TreeWidgetItemRole.Layer, layer)
treeWidgetItemLayer.setIcon(0, QgsIconUtils.iconForLayer(layer))
for feature, linkFeature in layerFeature[layer]:
- treeWidgetItem = QTreeWidgetItem(treeWidgetItemLayer, [QgsVectorLayerUtils.getFeatureDisplayString(layer, feature)])
+ treeWidgetItem = QTreeWidgetItem(
+ treeWidgetItemLayer, [QgsVectorLayerUtils.getFeatureDisplayString(layer, feature)]
+ )
treeWidgetItem.setData(0, TreeWidgetItemRole.Type, TreeWidgetItemType.Feature)
treeWidgetItem.setData(0, TreeWidgetItemRole.Layer, layer)
treeWidgetItem.setData(0, TreeWidgetItemRole.Feature, feature)
@@ -273,39 +265,45 @@ def parentFormValueChanged(self, attribute, newValue):
def checkLayerEditingMode(self):
if self.relation().referencingLayer().isEditable() is False:
- QMessageBox.critical(self,
- self.tr("Layer not editable"),
- self.tr("Layer '{0}' is not in editing mode.").format(self.relation().referencingLayer().name()))
+ QMessageBox.critical(
+ self,
+ self.tr("Layer not editable"),
+ self.tr("Layer '{0}' is not in editing mode.").format(self.relation().referencingLayer().name()),
+ )
return False
if self.nmRelation().isValid():
if self.nmRelation().referencedLayer().isEditable() is False:
- QMessageBox.critical(self,
- self.tr("Layer not editable"),
- self.tr("Layer '{0}' is not in editing mode.").format(self.nmRelation().referencedLayer().name()))
+ QMessageBox.critical(
+ self,
+ self.tr("Layer not editable"),
+ self.tr("Layer '{0}' is not in editing mode.").format(self.nmRelation().referencedLayer().name()),
+ )
return False
return True
def _setCardinality(self):
- if (self.nmRelation().isValid() is False and
- self.polymorphicRelationEnabled is False):
+ if self.nmRelation().isValid() is False and self.polymorphicRelationEnabled is False:
self.cardinality = Cardinality.ManyToOne
return
- elif (self.nmRelation().isValid() and
- self.polymorphicRelationEnabled is False):
+ elif self.nmRelation().isValid() and self.polymorphicRelationEnabled is False:
self.cardinality = Cardinality.ManyToMany
return
- elif (self.polymorphicRelationEnabled and
- self._polymorphicRelation.referencingLayer().id() == self.relation().referencedLayer().id()):
+ elif (
+ self.polymorphicRelationEnabled
+ and self._polymorphicRelation.referencingLayer().id() == self.relation().referencedLayer().id()
+ ):
self.cardinality = Cardinality.ManyToOnePolymorphic
return
- elif (self.polymorphicRelationEnabled and
- self._polymorphicRelation.referencingLayer().id() == self.relation().referencingLayer().id()):
+ elif (
+ self.polymorphicRelationEnabled
+ and self._polymorphicRelation.referencingLayer().id() == self.relation().referencingLayer().id()
+ ):
self.cardinality = Cardinality.ManyToManyPolymorphic
return
@@ -326,22 +324,20 @@ def saveChildLayerEdits(self):
def actionShowFormTriggered(self):
if self.mFeaturesTreeWidget.currentItem() is None:
- QMessageBox.critical(self,
- self.tr("No feature selected"),
- self.tr("Please select a feature."))
+ QMessageBox.critical(self, self.tr("No feature selected"), self.tr("Please select a feature."))
return
if self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Type) != TreeWidgetItemType.Feature:
- QMessageBox.critical(self,
- self.tr("Selected item is not a feature"),
- self.tr("Please select a feature."))
+ QMessageBox.critical(self, self.tr("Selected item is not a feature"), self.tr("Please select a feature."))
return
- showDocumentFormDialog = QgsAttributeDialog(self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Layer),
- self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Feature),
- False,
- self,
- True)
+ showDocumentFormDialog = QgsAttributeDialog(
+ self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Layer),
+ self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Feature),
+ False,
+ self,
+ True,
+ )
showDocumentFormDialog.exec()
self.updateUi()
@@ -373,18 +369,15 @@ def linkFeatureManyToManyPolymorphic(self):
for relation in self._polymorphicRelation.generateRelations():
nmRelations[relation.referencedLayer().name()] = relation
- layerName, ok = QInputDialog.getItem(self,
- self.tr("Please selct a layer"),
- self.tr("Layer:"),
- nmRelations.keys())
+ layerName, ok = QInputDialog.getItem(
+ self, self.tr("Please selct a layer"), self.tr("Layer:"), nmRelations.keys()
+ )
if not ok:
return
nmRelation = nmRelations[layerName]
- selectionDlg = QgsFeatureSelectionDlg(nmRelation.referencedLayer(),
- self.editorContext(),
- self)
+ selectionDlg = QgsFeatureSelectionDlg(nmRelation.referencedLayer(), self.editorContext(), self)
selectionDlg.setWindowTitle(self.tr("Please select the features to link. Layer: {0}").format(layerName))
if not selectionDlg.exec():
return
@@ -393,7 +386,9 @@ def linkFeatureManyToManyPolymorphic(self):
fields = self.relation().referencingLayer().fields()
linkAttributes = dict()
- linkAttributes[fields.indexFromName(self._polymorphicRelation.referencedLayerField())] = self._polymorphicRelation.layerRepresentation(nmRelation.referencedLayer())
+ linkAttributes[
+ fields.indexFromName(self._polymorphicRelation.referencedLayerField())
+ ] = self._polymorphicRelation.layerRepresentation(nmRelation.referencedLayer())
for key in self.relation().fieldPairs():
linkAttributes[fields.indexOf(key)] = self.feature().attribute(self.relation().fieldPairs()[key])
@@ -401,19 +396,19 @@ def linkFeatureManyToManyPolymorphic(self):
context = self.relation().referencingLayer().createExpressionContext()
featureIterator = nmRelation.referencedLayer().getFeatures(
- QgsFeatureRequest()
- .setFilterFids(selectionDlg.selectedFeatures())
- .setSubsetOfAttributes(nmRelation.referencedFields()))
+ QgsFeatureRequest()
+ .setFilterFids(selectionDlg.selectedFeatures())
+ .setSubsetOfAttributes(nmRelation.referencedFields())
+ )
relatedFeature = QgsFeature()
newFeatures = []
while featureIterator.nextFeature(relatedFeature):
for key in nmRelation.fieldPairs():
linkAttributes[fields.indexOf(key)] = relatedFeature.attribute(nmRelation.fieldPairs()[key])
- linkFeature = QgsVectorLayerUtils.createFeature(self.relation().referencingLayer(),
- QgsGeometry(),
- linkAttributes,
- context)
+ linkFeature = QgsVectorLayerUtils.createFeature(
+ self.relation().referencingLayer(), QgsGeometry(), linkAttributes, context
+ )
newFeatures.append(linkFeature)
self.relation().referencingLayer().addFeatures(newFeatures)
@@ -428,15 +423,11 @@ def actionUnlinkFeatureTriggered(self):
return
if self.mFeaturesTreeWidget.currentItem() is None:
- QMessageBox.critical(self,
- self.tr("No feature selected"),
- self.tr("Please select a feature to unlink."))
+ QMessageBox.critical(self, self.tr("No feature selected"), self.tr("Please select a feature to unlink."))
return
if self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Type) != TreeWidgetItemType.Feature:
- QMessageBox.critical(self,
- self.tr("Selected item is not a feature"),
- self.tr("Please select a feature."))
+ QMessageBox.critical(self, self.tr("Selected item is not a feature"), self.tr("Please select a feature."))
return
if self.cardinality == Cardinality.ManyToOne:
@@ -449,7 +440,9 @@ def actionUnlinkFeatureTriggered(self):
print("unlink ManyToOnePolymorphic")
if self.cardinality == Cardinality.ManyToManyPolymorphic:
- self.relation().referencingLayer().deleteFeature(self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.LinkFeature).id())
+ self.relation().referencingLayer().deleteFeature(
+ self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.LinkFeature).id()
+ )
self.updateUi()
def updateButtons(self):
@@ -457,23 +450,22 @@ def updateButtons(self):
toggleEditingButtonEnabled = False
editable = False
linkable = False
- spatial = False
selectionNotEmpty = True
- if (self.mFeaturesTreeWidget.currentItem() is None or
- self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Type) != TreeWidgetItemType.Feature):
+ if (
+ self.mFeaturesTreeWidget.currentItem() is None
+ or self.mFeaturesTreeWidget.currentItem().data(0, TreeWidgetItemRole.Type) != TreeWidgetItemType.Feature
+ ):
selectionNotEmpty = False
if self.relation().isValid():
toggleEditingButtonEnabled = self.relation().referencingLayer().supportsEditing()
editable = self.relation().referencingLayer().isEditable()
linkable = self.relation().referencingLayer().isEditable()
- spatial = self.relation().referencingLayer().isSpatial()
if self.nmRelation().isValid():
toggleEditingButtonEnabled |= self.nmRelation().referencedLayer().supportsEditing()
editable = self.nmRelation().referencedLayer().isEditable()
- spatial = self.nmRelation().referencedLayer().isSpatial()
self.actionToggleEditing.setEnabled(toggleEditingButtonEnabled)
self.actionLinkFeature.setEnabled(linkable)
@@ -490,20 +482,24 @@ def _checkTransactionGroup(self):
self._layerInSameTransactionGroup = False
connectionString = PluginHelper.connectionString(self.relation().referencedLayer().source())
- transactionGroup = QgsProject.instance().transactionGroup(self.relation().referencedLayer().providerType(),
- connectionString)
+ transactionGroup = QgsProject.instance().transactionGroup(
+ self.relation().referencedLayer().providerType(), connectionString
+ )
if transactionGroup is None:
self.updateButtons()
return
if self.nmRelation().isValid():
- if (self.relation().referencedLayer() in transactionGroup.layers() and
- self.relation().referencingLayer() in transactionGroup.layers() and
- self.nmRelation().referencedLayer() in transactionGroup.layers()):
+ if (
+ self.relation().referencedLayer() in transactionGroup.layers()
+ and self.relation().referencingLayer() in transactionGroup.layers()
+ and self.nmRelation().referencedLayer() in transactionGroup.layers()
+ ):
self._layerInSameTransactionGroup = True
else:
- if (self.relation().referencedLayer() in transactionGroup.layers() and
- self.relation().referencingLayer() in transactionGroup.layers()):
+ if (
+ self.relation().referencedLayer() in transactionGroup.layers()
+ and self.relation().referencingLayer() in transactionGroup.layers()
+ ):
self._layerInSameTransactionGroup = True
-
diff --git a/document_management_system/gui/relation_editor_document_side_widget_factory.py b/document_management_system/gui/relation_editor_document_side_widget_factory.py
index 017f16e..15648cb 100644
--- a/document_management_system/gui/relation_editor_document_side_widget_factory.py
+++ b/document_management_system/gui/relation_editor_document_side_widget_factory.py
@@ -10,11 +10,12 @@
from qgis.gui import QgsAbstractRelationEditorWidgetFactory
from document_management_system.gui.relation_editor_document_side_widget import RelationEditorDocumentSideWidget
-from document_management_system.gui.relation_editor_document_side_config_widget import RelationEditorDocumentSideConfigWidget
+from document_management_system.gui.relation_editor_document_side_config_widget import (
+ RelationEditorDocumentSideConfigWidget,
+)
class RelationEditorDocumentSideWidgetFactory(QgsAbstractRelationEditorWidgetFactory):
-
@staticmethod
def type():
return "document_relation_editor_document_side"
diff --git a/document_management_system/gui/relation_editor_feature_side_config_widget.py b/document_management_system/gui/relation_editor_feature_side_config_widget.py
index 2d7186b..e7a4818 100644
--- a/document_management_system/gui/relation_editor_feature_side_config_widget.py
+++ b/document_management_system/gui/relation_editor_feature_side_config_widget.py
@@ -12,11 +12,10 @@
from qgis.PyQt.uic import loadUiType
from qgis.gui import QgsAbstractRelationEditorConfigWidget
-WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), '../ui/relation_editor_feature_side_config_widget.ui'))
+WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), "../ui/relation_editor_feature_side_config_widget.ui"))
class RelationEditorFeatureSideConfigWidget(QgsAbstractRelationEditorConfigWidget, WidgetUi):
-
def __init__(self, relation, parent):
super().__init__(relation, parent)
self.setupUi(self)
@@ -25,13 +24,13 @@ def __init__(self, relation, parent):
def config(self):
return {
- 'documents_path': self.mDocumentsPathExpressionWidget.currentField()[0],
- 'document_filename': self.mDocumentFilenameExpressionWidget.currentField()[0],
+ "documents_path": self.mDocumentsPathExpressionWidget.currentField()[0],
+ "document_filename": self.mDocumentFilenameExpressionWidget.currentField()[0],
}
def setConfig(self, config):
- self.mDocumentsPathExpressionWidget.setField(config.get('documents_path'))
- self.mDocumentFilenameExpressionWidget.setField(config.get('document_filename'))
+ self.mDocumentsPathExpressionWidget.setField(config.get("documents_path"))
+ self.mDocumentFilenameExpressionWidget.setField(config.get("document_filename"))
def setNmRelation(self, nmRelation):
diff --git a/document_management_system/gui/relation_editor_feature_side_widget.py b/document_management_system/gui/relation_editor_feature_side_widget.py
index 9272508..7f7981f 100644
--- a/document_management_system/gui/relation_editor_feature_side_widget.py
+++ b/document_management_system/gui/relation_editor_feature_side_widget.py
@@ -11,20 +11,9 @@
from PyQt5.QtQuickWidgets import QQuickWidget
import os
from enum import Enum
-from qgis.PyQt.QtCore import (
- QDir,
- QTimer,
- QUrl,
- QVariant,
- pyqtSignal,
- pyqtProperty,
- pyqtSlot
-)
+from qgis.PyQt.QtCore import QDir, QTimer, QUrl, QVariant, pyqtSignal, pyqtProperty, pyqtSlot
from qgis.PyQt.QtGui import QIcon
-from qgis.PyQt.QtWidgets import (
- QAction,
- QMessageBox
-)
+from qgis.PyQt.QtWidgets import QAction, QMessageBox
from qgis.PyQt.uic import loadUiType
from qgis.core import (
QgsExpression,
@@ -34,30 +23,28 @@
QgsProject,
QgsRelation,
QgsSettingsEntryString,
- QgsVectorLayerUtils
-)
-from qgis.gui import (
- QgsAbstractRelationEditorWidget,
- QgsAttributeDialog
+ QgsVectorLayerUtils,
)
+from qgis.gui import QgsAbstractRelationEditorWidget, QgsAttributeDialog
from document_management_system.core.document_model import DocumentModel
from document_management_system.core.file_type_icon_image_provider import FileTypeIconImageProvider
from document_management_system.core.preview_image_provider import PreviewImageProvider
from document_management_system.core.plugin_helper import PluginHelper
-WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), '../ui/relation_editor_feature_side_widget.ui'))
+WidgetUi, _ = loadUiType(os.path.join(os.path.dirname(__file__), "../ui/relation_editor_feature_side_widget.ui"))
class RelationEditorFeatureSideWidget(QgsAbstractRelationEditorWidget, WidgetUi):
-
class LastView(str, Enum):
ListView = "ListView"
IconView = "IconView"
- settingsLastView = QgsSettingsEntryString('relationEditorFeatureSideLastView',
- PluginHelper.PLUGIN_SLUG,
- LastView.ListView,
- PluginHelper.tr('Last view used in the relation editor document side widget'))
+ settingsLastView = QgsSettingsEntryString(
+ "relationEditorFeatureSideLastView",
+ PluginHelper.PLUGIN_SLUG,
+ LastView.ListView,
+ PluginHelper.tr("Last view used in the relation editor document side widget"),
+ )
signalCurrentViewChanged = pyqtSignal()
@@ -68,7 +55,7 @@ def __init__(self, config, parent):
self._updateUiTimer.timeout.connect(self.updateUiTimeout)
self.setupUi(self)
- print('DocumentRelationEditorFeatureSideWidget.__init__')
+ print("DocumentRelationEditorFeatureSideWidget.__init__")
self.documents_path = str()
self.document_filename = str()
@@ -81,21 +68,22 @@ def __init__(self, config, parent):
self._currentDocumentId = None
# Actions
- self.actionToggleEditing = QAction(QIcon(":/images/themes/default/mActionToggleEditing.svg"),
- self.tr("Toggle editing mode for child layers"))
+ self.actionToggleEditing = QAction(
+ QIcon(":/images/themes/default/mActionToggleEditing.svg"), self.tr("Toggle editing mode for child layers")
+ )
self.actionToggleEditing.setCheckable(True)
- self.actionSaveEdits = QAction(QIcon(":/images/themes/default/mActionSaveEdits.svg"),
- self.tr("Save child layer edits"))
- self.actionShowForm = QAction(QIcon(":/images/themes/default/mActionMultiEdit.svg"),
- self.tr("Show form"))
- self.actionAddFeature = QAction(QIcon(":/images/themes/default/symbologyAdd.svg"),
- self.tr("Add document"))
- self.actionDeleteFeature = QAction(QIcon(":/images/themes/default/mActionDeleteSelected.svg"),
- self.tr("Drop document"))
- self.actionLinkFeature = QAction(QIcon(":/images/themes/default/mActionLink.svg"),
- self.tr("Link document"))
- self.actionUnlinkFeature = QAction(QIcon(":/images/themes/default/mActionUnlink.svg"),
- self.tr("Unlink document"))
+ self.actionSaveEdits = QAction(
+ QIcon(":/images/themes/default/mActionSaveEdits.svg"), self.tr("Save child layer edits")
+ )
+ self.actionShowForm = QAction(QIcon(":/images/themes/default/mActionMultiEdit.svg"), self.tr("Show form"))
+ self.actionAddFeature = QAction(QIcon(":/images/themes/default/symbologyAdd.svg"), self.tr("Add document"))
+ self.actionDeleteFeature = QAction(
+ QIcon(":/images/themes/default/mActionDeleteSelected.svg"), self.tr("Drop document")
+ )
+ self.actionLinkFeature = QAction(QIcon(":/images/themes/default/mActionLink.svg"), self.tr("Link document"))
+ self.actionUnlinkFeature = QAction(
+ QIcon(":/images/themes/default/mActionUnlink.svg"), self.tr("Unlink document")
+ )
# Tool buttons
self.mToggleEditingToolButton.setDefaultAction(self.actionToggleEditing)
@@ -120,12 +108,16 @@ def __init__(self, config, parent):
self.view = QQuickWidget()
self.view.rootContext().setContextProperty("documentModel", self.model)
self.view.rootContext().setContextProperty("parentWidget", self)
- self.view.rootContext().setContextProperty("CONST_LIST_VIEW", str(RelationEditorFeatureSideWidget.LastView.ListView))
- self.view.rootContext().setContextProperty("CONST_ICON_VIEW", str(RelationEditorFeatureSideWidget.LastView.IconView))
+ self.view.rootContext().setContextProperty(
+ "CONST_LIST_VIEW", str(RelationEditorFeatureSideWidget.LastView.ListView)
+ )
+ self.view.rootContext().setContextProperty(
+ "CONST_ICON_VIEW", str(RelationEditorFeatureSideWidget.LastView.IconView)
+ )
self.view.engine().addImageProvider("previewImageProvider", self._previewImageProvider)
self.view.engine().addImageProvider("fileTypeSmallIconProvider", self._fileTypeSmallIconProvider)
self.view.engine().addImageProvider("fileTypeBigIconProvider", self._fileTypeBigIconProvider)
- self.view.setSource(QUrl.fromLocalFile(os.path.join(os.path.dirname(__file__), '../qml/DocumentList.qml')))
+ self.view.setSource(QUrl.fromLocalFile(os.path.join(os.path.dirname(__file__), "../qml/DocumentList.qml")))
self.view.setResizeMode(QQuickWidget.SizeRootObjectToView)
self.layout().addWidget(self.view)
@@ -168,41 +160,32 @@ def nmRelation(self):
return self._nmRelation
def config(self):
- return {
-
- }
+ return {}
def setConfig(self, config):
- self.documents_path = config['documents_path']
- self.document_filename = config['document_filename']
+ self.documents_path = config["documents_path"]
+ self.document_filename = config["document_filename"]
def updateUi(self):
self._updateUiTimer.start(200)
def updateUiTimeout(self):
- self.model.init(self.relation(),
- self.nmRelation(),
- self.feature(),
- self.documents_path,
- self.document_filename)
+ self.model.init(self.relation(), self.nmRelation(), self.feature(), self.documents_path, self.document_filename)
def updateButtons(self):
toggleEditingButtonEnabled = False
editable = False
linkable = False
- spatial = False
selectionNotEmpty = self._currentDocumentId is not None
if self.relation().isValid():
toggleEditingButtonEnabled = self.relation().referencingLayer().supportsEditing()
editable = self.relation().referencingLayer().isEditable()
linkable = self.relation().referencingLayer().isEditable()
- spatial = self.relation().referencingLayer().isSpatial()
if self.nmRelation().isValid():
toggleEditingButtonEnabled |= self.nmRelation().referencedLayer().supportsEditing()
editable = self.nmRelation().referencedLayer().isEditable()
- spatial = self.nmRelation().referencedLayer().isSpatial()
self.mToggleEditingToolButton.setEnabled(toggleEditingButtonEnabled)
self.mAddFeatureToolButton.setEnabled(editable)
@@ -240,20 +223,23 @@ def _checkTransactionGroup(self):
return
connectionString = PluginHelper.connectionString(referenced_layer.source())
- transactionGroup = QgsProject.instance().transactionGroup(self.relation().referencedLayer().providerType(),
- connectionString)
+ transactionGroup = QgsProject.instance().transactionGroup(referenced_layer.providerType(), connectionString)
if transactionGroup is None:
return
if self.nmRelation().isValid():
- if (self.relation().referencedLayer() in transactionGroup.layers() and
- self.relation().referencingLayer() in transactionGroup.layers() and
- self.nmRelation().referencedLayer() in transactionGroup.layers()):
+ if (
+ self.relation().referencedLayer() in transactionGroup.layers()
+ and self.relation().referencingLayer() in transactionGroup.layers()
+ and self.nmRelation().referencedLayer() in transactionGroup.layers()
+ ):
self._layerInSameTransactionGroup = True
else:
- if (self.relation().referencedLayer() in transactionGroup.layers() and
- self.relation().referencingLayer() in transactionGroup.layers()):
+ if (
+ self.relation().referencedLayer() in transactionGroup.layers()
+ and self.relation().referencingLayer() in transactionGroup.layers()
+ ):
self._layerInSameTransactionGroup = True
def parentFormValueChanged(self, attribute, newValue):
@@ -262,16 +248,20 @@ def parentFormValueChanged(self, attribute, newValue):
def checkLayerEditingMode(self):
if self.relation().referencingLayer().isEditable() is False:
- QMessageBox.critical(self,
- self.tr("Layer not editable"),
- self.tr("Layer '{0}' is not in editing mode.").format(self.relation().referencingLayer().name()))
+ QMessageBox.critical(
+ self,
+ self.tr("Layer not editable"),
+ self.tr("Layer '{0}' is not in editing mode.").format(self.relation().referencingLayer().name()),
+ )
return False
if self.nmRelation().isValid():
if self.nmRelation().referencedLayer().isEditable() is False:
- QMessageBox.critical(self,
- self.tr("Layer not editable"),
- self.tr("Layer '{0}' is not in editing mode.").format(self.nmRelation().referencedLayer().name()))
+ QMessageBox.critical(
+ self,
+ self.tr("Layer not editable"),
+ self.tr("Layer '{0}' is not in editing mode.").format(self.nmRelation().referencedLayer().name()),
+ )
return False
return True
@@ -334,30 +324,32 @@ def addDroppedDocument(self, fileUrl):
# For generated relations insert the referenced layer field
if self.relation().type() == QgsRelation.Generated:
polyRel = self.relation().polymorphicRelation()
- keyAttrs[fields.indexFromName(polyRel.referencedLayerField())] = polyRel.layerRepresentation(self.relation().referencedLayer())
+ keyAttrs[fields.indexFromName(polyRel.referencedLayerField())] = polyRel.layerRepresentation(
+ self.relation().referencedLayer()
+ )
if self.nmRelation().isValid():
# only normal relations support m:n relation
if self.nmRelation().type() != QgsRelation.Normal:
- QMessageBox.critical(self,
- self.tr("Add document"),
- self.tr("Invalid relation, Only normal relations support m:n relation."))
+ QMessageBox.critical(
+ self,
+ self.tr("Add document"),
+ self.tr("Invalid relation, Only normal relations support m:n relation."),
+ )
return
# Pre fill inserting document filepath
- attributes = {
- self.nmRelation().referencedLayer().fields().indexFromName(self.document_filename): filename
- }
+ attributes = {self.nmRelation().referencedLayer().fields().indexFromName(self.document_filename): filename}
# n:m Relation: first let the user create a new feature on the other table
# and autocreate a new linking feature.
- ok, feature = self.editorContext().vectorLayerTools().addFeature(self.nmRelation().referencedLayer(),
- attributes,
- QgsGeometry())
+ ok, feature = (
+ self.editorContext()
+ .vectorLayerTools()
+ .addFeature(self.nmRelation().referencedLayer(), attributes, QgsGeometry())
+ )
if not ok:
- QMessageBox.critical(self,
- self.tr("Add document"),
- self.tr("Could not add a new linking feature."))
+ QMessageBox.critical(self, self.tr("Add document"), self.tr("Could not add a new linking feature."))
return
for key in self.relation().fieldPairs():
@@ -366,15 +358,15 @@ def addDroppedDocument(self, fileUrl):
for key in self.nmRelation().fieldPairs():
keyAttrs[fields.indexOf(key)] = feature.attribute(self.nmRelation().fieldPairs()[key])
- linkFeature = QgsVectorLayerUtils.createFeature(self.relation().referencingLayer(),
- QgsGeometry(),
- keyAttrs,
- self.relation().referencingLayer().createExpressionContext())
+ linkFeature = QgsVectorLayerUtils.createFeature(
+ self.relation().referencingLayer(),
+ QgsGeometry(),
+ keyAttrs,
+ self.relation().referencingLayer().createExpressionContext(),
+ )
if not self.relation().referencingLayer().addFeature(linkFeature):
- QMessageBox.critical(self,
- self.tr("Add document"),
- self.tr("Could not add a new feature."))
+ QMessageBox.critical(self, self.tr("Add document"), self.tr("Could not add a new feature."))
return
else:
@@ -384,13 +376,13 @@ def addDroppedDocument(self, fileUrl):
# Pre fill inserting document filepath
keyAttrs[fields] = filename
- ok, feature = self.editorContext().vectorLayerTools().addFeature(self.relation().referencingLayer(),
- keyAttrs,
- QgsGeometry())
+ ok, feature = (
+ self.editorContext()
+ .vectorLayerTools()
+ .addFeature(self.relation().referencingLayer(), keyAttrs, QgsGeometry())
+ )
if not ok:
- QMessageBox.critical(self,
- self.tr("Add document"),
- self.tr("Could not add a new feature."))
+ QMessageBox.critical(self, self.tr("Add document"), self.tr("Could not add a new feature."))
return
self.updateUi()
@@ -418,11 +410,7 @@ def showDocumentForm(self):
if self.nmRelation().isValid():
layer = self.nmRelation().referencedLayer()
- showDocumentFormDialog = QgsAttributeDialog(layer,
- layer.getFeature(self._currentDocumentId),
- False,
- self,
- True)
+ showDocumentFormDialog = QgsAttributeDialog(layer, layer.getFeature(self._currentDocumentId), False, self, True)
showDocumentFormDialog.exec()
self.updateUi()
diff --git a/document_management_system/gui/relation_editor_feature_side_widget_factory.py b/document_management_system/gui/relation_editor_feature_side_widget_factory.py
index 9447ed0..fb2b19d 100644
--- a/document_management_system/gui/relation_editor_feature_side_widget_factory.py
+++ b/document_management_system/gui/relation_editor_feature_side_widget_factory.py
@@ -10,11 +10,12 @@
from qgis.gui import QgsAbstractRelationEditorWidgetFactory
from document_management_system.gui.relation_editor_feature_side_widget import RelationEditorFeatureSideWidget
-from document_management_system.gui.relation_editor_feature_side_config_widget import RelationEditorFeatureSideConfigWidget
+from document_management_system.gui.relation_editor_feature_side_config_widget import (
+ RelationEditorFeatureSideConfigWidget,
+)
class RelationEditorFeatureSideWidgetFactory(QgsAbstractRelationEditorWidgetFactory):
-
@staticmethod
def type():
return "document_relation_editor_feature_side"
diff --git a/document_management_system/tests/test_widgets.py b/document_management_system/tests/test_widgets.py
index da7cce3..450ddf6 100644
--- a/document_management_system/tests/test_widgets.py
+++ b/document_management_system/tests/test_widgets.py
@@ -1,12 +1,11 @@
-
from qgis.testing import unittest, start_app
-from document_management_system.gui.relation_editor_document_side_widget_factory import RelationEditorDocumentSideWidgetFactory
+from document_management_system.gui.relation_editor_document_side_widget_factory import (
+ RelationEditorDocumentSideWidgetFactory,
+)
start_app()
class TestRelationEditorDocumentSideWidgetFactory(unittest.TestCase):
-
def test_instantiate(self):
RelationEditorDocumentSideWidgetFactory()
-