Skip to content

Commit

Permalink
Merge pull request #522 from opengisch/style_with_style
Browse files Browse the repository at this point in the history
Style is the answer to everything
  • Loading branch information
signedav committed Aug 31, 2021
2 parents c601a60 + d894298 commit 94907b3
Show file tree
Hide file tree
Showing 151 changed files with 23,471 additions and 18,500 deletions.
13 changes: 13 additions & 0 deletions .github/workflows/pre-commit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name: pre-commit

on:
pull_request:
push:
branches: [master]

jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: pre-commit/action@v2.0.2
36 changes: 36 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

repos:
# Fix end of files
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: mixed-line-ending
args:
- '--fix=lf'

# Remove unused imports/variables
- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:
- id: autoflake
args:
- "--in-place"
- "--remove-all-unused-imports"
- "--remove-unused-variable"

# Sort imports
- repo: https://github.com/pycqa/isort
rev: "5.7.0"
hooks:
- id: isort
args:
- --profile
- black

# Black formatting
- repo: https://github.com/psf/black
rev: 21.7b0
hooks:
- id: black
2 changes: 1 addition & 1 deletion .qgis-plugin-ci
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
plugin_path: QgisModelBaker
github_organization_slug: opengisch
project_slug: QgisModelBaker
project_slug: QgisModelBaker
1 change: 1 addition & 0 deletions QgisModelBaker/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,5 @@

def classFactory(iface):
from .qgismodelbaker import QgisModelBakerPlugin

return QgisModelBakerPlugin(iface)
39 changes: 19 additions & 20 deletions QgisModelBaker/gui/custom_model_dir.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,34 +18,29 @@
***************************************************************************/
"""

from QgisModelBaker.utils import get_ui_class
from QgisModelBaker.utils.qt_utils import selectFolder

from qgis.gui import QgsGui
from qgis.PyQt.QtCore import QCoreApplication, Qt
from qgis.PyQt.QtWidgets import QDialog, QListWidgetItem

from qgis.gui import QgsGui

from QgisModelBaker.utils import ui
from QgisModelBaker.utils.qt_utils import selectFolder

DIALOG_UI = get_ui_class('custom_model_dir.ui')
DIALOG_UI = ui.get_ui_class("custom_model_dir.ui")


class CustomModelDirDialog(QDialog, DIALOG_UI):

def __init__(self, current_paths, parent=None):
QDialog.__init__(self, parent)
self.setupUi(self)
QgsGui.instance().enableAutoGeometryRestore(self);
QgsGui.instance().enableAutoGeometryRestore(self)
self.parent = parent

paths = current_paths.split(";")
self.model_dir_list.addItems(
[path for path in paths if path.strip()] or [''])
self.model_dir_list.addItems([path for path in paths if path.strip()] or [""])
for i in range(self.model_dir_list.count()):
self.set_flags(self.model_dir_list.item(i))

self.model_dir_list.itemSelectionChanged.connect(
self.on_selection_changed)
self.model_dir_list.itemSelectionChanged.connect(self.on_selection_changed)
self.on_selection_changed()

self.add_button.clicked.connect(self.add_model_dir)
Expand All @@ -65,19 +60,23 @@ def remove_model_dir(self):
self.model_dir_list.takeItem(self.model_dir_list.row(item))

def accepted(self):
items = [self.model_dir_list.item(
x) for x in range(self.model_dir_list.count())]
new_paths = ";".join([i.text().strip()
for i in items if i.text().strip()])
items = [
self.model_dir_list.item(x) for x in range(self.model_dir_list.count())
]
new_paths = ";".join([i.text().strip() for i in items if i.text().strip()])
self.parent.custom_model_directories_line_edit.setText(new_paths)

def browse_dir(self):
selectFolder(self.model_dir_list.currentItem(), title=QCoreApplication.translate(
'QgisModelBaker', 'Open Folder with ili Models'), parent=None)
selectFolder(
self.model_dir_list.currentItem(),
title=QCoreApplication.translate(
"QgisModelBaker", "Open Folder with ili Models"
),
parent=None,
)

def set_flags(self, item):
item.setFlags(Qt.ItemIsSelectable |
Qt.ItemIsEditable | Qt.ItemIsEnabled)
item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEditable | Qt.ItemIsEnabled)

def on_selection_changed(self):
enable = len(self.model_dir_list.selectedItems()) == 1
Expand Down
115 changes: 63 additions & 52 deletions QgisModelBaker/gui/dataset_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,34 +18,21 @@
"""
from enum import Enum

from ..libqgsprojectgen.db_factory.db_simple_factory import DbSimpleFactory
from qgis.core import QgsMapLayer, QgsProject
from qgis.PyQt.QtCore import QSettings, Qt, QTimer
from qgis.PyQt.QtGui import QStandardItem, QStandardItemModel
from qgis.PyQt.QtWidgets import QDialog, QHeaderView, QMessageBox, QTableView

import QgisModelBaker.utils.db_utils as db_utils
from QgisModelBaker.gui.edit_dataset_name import EditDatasetDialog
from QgisModelBaker.libili2db.globals import DbActionType, DbIliMode, displayDbIliMode
from QgisModelBaker.libili2db.ili2dbconfig import Ili2DbCommandConfiguration

from ..libqgsprojectgen.db_factory.db_simple_factory import DbSimpleFactory
from ..utils import ui

DIALOG_UI = ui.get_ui_class("dataset_manager.ui")

from QgisModelBaker.libili2db.globals import DbIliMode, displayDbIliMode, DbActionType
from QgisModelBaker.libili2db.ili2dbconfig import Ili2DbCommandConfiguration
from QgisModelBaker.gui.edit_dataset_name import EditDatasetDialog
from qgis.core import QgsProject, QgsMapLayer

from qgis.PyQt.QtWidgets import (
QDialog,
QHeaderView,
QTableView,
QMessageBox
)
from qgis.PyQt.QtCore import (
QSettings,
QTimer,
Qt
)
from ..utils import get_ui_class

from qgis.PyQt.QtGui import (
QStandardItemModel,
QStandardItem
)

DIALOG_UI = get_ui_class('dataset_manager.ui')

class DatasetModel(QStandardItemModel):
class Roles(Enum):
Expand All @@ -61,22 +48,22 @@ def __init__(self):
def flags(self, index):
return Qt.ItemIsSelectable | Qt.ItemIsEnabled

def refresh_model(self, db_connector = None):
def refresh_model(self, db_connector=None):
self.beginResetModel()
self.clear()
if db_connector:
datasets_info = db_connector.get_datasets_info()
for record in datasets_info:
item = QStandardItem()
item.setData(record['datasetname'], int(Qt.DisplayRole))
item.setData(record['datasetname'], int(DatasetModel.Roles.DATASETNAME))
item.setData(record['t_id'], int(DatasetModel.Roles.TID))
item.setData(record["datasetname"], int(Qt.DisplayRole))
item.setData(record["datasetname"], int(DatasetModel.Roles.DATASETNAME))
item.setData(record["t_id"], int(DatasetModel.Roles.TID))
self.appendRow(item)
self.endResetModel()

class DatasetManagerDialog(QDialog, DIALOG_UI):

def __init__(self, iface, parent=None, wizard_embedded = False):
class DatasetManagerDialog(QDialog, DIALOG_UI):
def __init__(self, iface, parent=None, wizard_embedded=False):

QDialog.__init__(self, parent)
self.iface = iface
Expand All @@ -93,8 +80,7 @@ def __init__(self, iface, parent=None, wizard_embedded = False):
for db_id in self.db_simple_factory.get_db_list(False):
self.type_combo_box.addItem(displayDbIliMode[db_id], db_id)
db_factory = self.db_simple_factory.create_factory(db_id)
item_panel = db_factory.get_config_panel(
self, DbActionType.EXPORT)
item_panel = db_factory.get_config_panel(self, DbActionType.EXPORT)
self._lst_panel[db_id] = item_panel
self.db_layout.addWidget(item_panel)

Expand All @@ -104,18 +90,22 @@ def __init__(self, iface, parent=None, wizard_embedded = False):
self.db_frame.setHidden(wizard_embedded)

self.dataset_model = DatasetModel()
self.dataset_tableview.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.dataset_tableview.horizontalHeader().setSectionResizeMode(
QHeaderView.Stretch
)
self.dataset_tableview.horizontalHeader().hide()
self.dataset_tableview.verticalHeader().hide()
self.dataset_tableview.setSelectionMode(QTableView.SingleSelection)
self.dataset_tableview.setModel(self.dataset_model)

self._restore_configuration()

#refresh the models on changing values but avoid massive db connects by timer
# refresh the models on changing values but avoid massive db connects by timer
self.refreshTimer = QTimer()
self.refreshTimer.setSingleShot(True)
self.refreshTimer.timeout.connect(lambda: self._refresh_datasets(self._updated_configuration()))
self.refreshTimer.timeout.connect(
lambda: self._refresh_datasets(self._updated_configuration())
)

for key, value in self._lst_panel.items():
value.notify_fields_modified.connect(self._request_for_refresh_datasets)
Expand All @@ -125,7 +115,9 @@ def __init__(self, iface, parent=None, wizard_embedded = False):
self.add_button.clicked.connect(self._add_dataset)
self.edit_button.clicked.connect(self._edit_dataset)
self.create_baskets_button.clicked.connect(self._create_baskets)
self.dataset_tableview.selectionModel().selectionChanged.connect( lambda: self._enable_dataset_handling(True))
self.dataset_tableview.selectionModel().selectionChanged.connect(
lambda: self._enable_dataset_handling(True)
)

def _close_editing(self):
editable_layers = []
Expand All @@ -134,15 +126,18 @@ def _close_editing(self):
self.iface.vectorLayerTools().stopEditing(layer)
if layer.isEditable():
editable_layers.append(layer)
if editable_layers:
if editable_layers:
warning_box = QMessageBox(self)
warning_box.setIcon(QMessageBox.Warning)
warning_title = self.tr("Layers still editable")
warning_box.setWindowTitle(warning_title)
warning_box.setText(self.tr("You have still layers in editable mode.\nIn case you modify datasets on the database of those layers, it could lead to database locks.\nEditable layers are:\n - {}").format('\n - '.join([layer.name() for layer in editable_layers])))
warning_box.setText(
self.tr(
"You have still layers in editable mode.\nIn case you modify datasets on the database of those layers, it could lead to database locks.\nEditable layers are:\n - {}"
).format("\n - ".join([layer.name() for layer in editable_layers]))
)
warning_box.exec_()


def _valid_selection(self):
"""
Returns if at least one dataset is selected
Expand Down Expand Up @@ -172,7 +167,7 @@ def _type_changed(self):
def _request_for_refresh_datasets(self):
# hold refresh back
self.refreshTimer.start(500)

def _refresh_datasets(self, configuration):
db_connector = db_utils.get_db_connector(configuration)
if db_connector and db_connector.get_basket_handling:
Expand All @@ -193,8 +188,15 @@ def _edit_dataset(self):
if self._valid_selection():
db_connector = db_utils.get_db_connector(self._updated_configuration())
if db_connector and db_connector.get_basket_handling:
dataset = (self.dataset_tableview.selectedIndexes()[0].data(int(DatasetModel.Roles.TID)), self.dataset_tableview.selectedIndexes()[0].data(int(DatasetModel.Roles.DATASETNAME)))
edit_dataset_dialog = EditDatasetDialog(self, db_connector, dataset )
dataset = (
self.dataset_tableview.selectedIndexes()[0].data(
int(DatasetModel.Roles.TID)
),
self.dataset_tableview.selectedIndexes()[0].data(
int(DatasetModel.Roles.DATASETNAME)
),
)
edit_dataset_dialog = EditDatasetDialog(self, db_connector, dataset)
edit_dataset_dialog.exec_()
self._refresh_datasets(self._updated_configuration())

Expand All @@ -204,15 +206,23 @@ def _create_baskets(self):
if db_connector and db_connector.get_basket_handling:
feedbacks = []
for record in db_connector.get_topics_info():
dataset_tid = self.dataset_tableview.selectedIndexes()[0].data(int(DatasetModel.Roles.TID))
status, message = db_connector.create_basket( dataset_tid, '.'.join([record['model'], record['topic']]))
dataset_tid = self.dataset_tableview.selectedIndexes()[0].data(
int(DatasetModel.Roles.TID)
)
status, message = db_connector.create_basket(
dataset_tid, ".".join([record["model"], record["topic"]])
)
feedbacks.append((status, message))

info_box = QMessageBox(self)
info_box.setIcon(QMessageBox.Warning if len([feedback for feedback in feedbacks if not feedback[0]]) else QMessageBox.Information)
info_box.setIcon(
QMessageBox.Warning
if len([feedback for feedback in feedbacks if not feedback[0]])
else QMessageBox.Information
)
info_title = self.tr("Created baskets")
info_box.setWindowTitle(info_title)
info_box.setText('\n'.join([feedback[1] for feedback in feedbacks]))
info_box.setText("\n".join([feedback[1] for feedback in feedbacks]))
info_box.exec_()

def _restore_configuration(self):
Expand All @@ -221,11 +231,11 @@ def _restore_configuration(self):
for db_id in self.db_simple_factory.get_db_list(False):
configuration = Ili2DbCommandConfiguration()
db_factory = self.db_simple_factory.create_factory(db_id)
config_manager = db_factory.get_db_command_config_manager( configuration)
config_manager = db_factory.get_db_command_config_manager(configuration)
config_manager.load_config_from_qsettings()
self._lst_panel[db_id].set_fields(configuration)

mode = settings.value('QgisModelBaker/importtype')
mode = settings.value("QgisModelBaker/importtype")
mode = DbIliMode[mode] if mode else self.db_simple_factory.default_database
mode = mode & ~DbIliMode.ili

Expand All @@ -244,8 +254,9 @@ def _updated_configuration(self):

def _save_configuration(self, configuration):
settings = QSettings()
settings.setValue('QgisModelBaker/importtype',
self.type_combo_box.currentData().name)
settings.setValue(
"QgisModelBaker/importtype", self.type_combo_box.currentData().name
)
mode = self.type_combo_box.currentData()
db_factory = self.db_simple_factory.create_factory(mode)
config_manager = db_factory.get_db_command_config_manager(configuration)
Expand Down
Loading

0 comments on commit 94907b3

Please sign in to comment.