From d38c4128e8f3f4af35ca09f60b7f58b254b9c5f0 Mon Sep 17 00:00:00 2001 From: signedav Date: Tue, 26 Aug 2025 13:29:33 +0200 Subject: [PATCH 1/2] Store dbparam map in baseconfig instead of the importconfig, since it's used on every ili2db command usually. --- modelbaker/db_factory/pg_command_config_manager.py | 6 ------ modelbaker/iliwrapper/ili2dbargs.py | 14 ++++++++------ modelbaker/iliwrapper/ili2dbconfig.py | 4 +++- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/modelbaker/db_factory/pg_command_config_manager.py b/modelbaker/db_factory/pg_command_config_manager.py index 9a5d2c4b..04b74d03 100644 --- a/modelbaker/db_factory/pg_command_config_manager.py +++ b/modelbaker/db_factory/pg_command_config_manager.py @@ -188,9 +188,6 @@ def save_config_in_qsettings(self) -> None: settings.setValue( self._settings_base_path + "sslmode", self.configuration.sslmode ) - settings.setValue( - self._settings_base_path + "dbparam_map", self.configuration.dbparam_map - ) def load_config_from_qsettings(self) -> None: settings = QSettings() @@ -219,6 +216,3 @@ def load_config_from_qsettings(self) -> None: self.configuration.sslmode = settings.value( self._settings_base_path + "sslmode" ) - self.configuration.dbparam_map = settings.value( - self._settings_base_path + "dbparam_map", {} - ) diff --git a/modelbaker/iliwrapper/ili2dbargs.py b/modelbaker/iliwrapper/ili2dbargs.py index b0600eed..eb23b98d 100644 --- a/modelbaker/iliwrapper/ili2dbargs.py +++ b/modelbaker/iliwrapper/ili2dbargs.py @@ -95,17 +95,19 @@ def _get_db_args(configuration, hide_password=False): db_args += ["--dbschema", configuration.dbschema or configuration.database] if configuration.sslmode: - if "sslmode" not in configuration.dbparam_map: - configuration.dbparam_map["sslmode"] = configuration.sslmode - if configuration.dbparam_map: + if "sslmode" not in configuration.base_configuration.dbparam_map: + configuration.base_configuration.dbparam_map[ + "sslmode" + ] = configuration.sslmode + if configuration.base_configuration.dbparam_map: temporary_filename = "{}/modelbaker-dbargs.conf".format(QDir.tempPath()) temporary_file = QFile(temporary_filename) if temporary_file.open(QFile.OpenModeFlag.WriteOnly): - if configuration.dbparam_map: - for key in configuration.dbparam_map.keys(): + if configuration.base_configuration.dbparam_map: + for key in configuration.base_configuration.dbparam_map.keys(): temporary_file.write( "{}={}\n".format( - key, configuration.dbparam_map[key] + key, configuration.base_configuration.dbparam_map[key] ).encode("utf-8") ) temporary_file.close() diff --git a/modelbaker/iliwrapper/ili2dbconfig.py b/modelbaker/iliwrapper/ili2dbconfig.py index a58a1295..69cc99d4 100644 --- a/modelbaker/iliwrapper/ili2dbconfig.py +++ b/modelbaker/iliwrapper/ili2dbconfig.py @@ -28,6 +28,7 @@ class BaseConfiguration: def __init__(self): self.super_pg_user = "postgres" self.super_pg_password = "postgres" + self.dbparam_map = {} self.custom_model_directories_enabled = False self.custom_model_directories = "" @@ -39,6 +40,7 @@ def __init__(self): def save(self, settings): settings.setValue("SuperUser", self.super_pg_user) settings.setValue("SuperPassword", self.super_pg_password) + settings.setValue("CustomDbParameters", self.dbparam_map) settings.setValue( "CustomModelDirectoriesEnabled", self.custom_model_directories_enabled ) @@ -50,6 +52,7 @@ def save(self, settings): def restore(self, settings): self.super_pg_user = settings.value("SuperUser", "postgres", str) self.super_pg_password = settings.value("SuperPassword", "postgres", str) + self.dbparam_map = settings.value("CustomDbParameters", {}, dict) self.custom_model_directories_enabled = settings.value( "CustomModelDirectoriesEnabled", False, bool ) @@ -127,7 +130,6 @@ def __init__(self, other=None): self.dbfile = "" self.dbservice = None self.sslmode = None - self.dbparam_map = {} self.tool = None self.ilifile = "" self.ilimodels = "" From e79ead667e2eacb268a254372865ca2e9f515bf1 Mon Sep 17 00:00:00 2001 From: signedav Date: Tue, 26 Aug 2025 13:52:16 +0200 Subject: [PATCH 2/2] fix tests --- tests/test_import_dbparams.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/test_import_dbparams.py b/tests/test_import_dbparams.py index 78bc09f3..269297c1 100644 --- a/tests/test_import_dbparams.py +++ b/tests/test_import_dbparams.py @@ -53,19 +53,25 @@ def test_postgis_withandwithout_params(self): assert importer.run() == iliimporter.Importer.SUCCESS # now we add the sslmode "require" by dbparams and it should fail - importer.configuration.dbparam_map = {"sslmode": "require"} + importer.configuration.base_configuration.dbparam_map = {"sslmode": "require"} assert importer.run() == iliimporter.Importer.ERROR # change sslmode to "disable" by dbparams and it should succeed again - importer.configuration.dbparam_map = {"sslmode": "disable"} + importer.configuration.base_configuration.dbparam_map = {"sslmode": "disable"} assert importer.run() == iliimporter.Importer.SUCCESS # now we add the readonly "true" by dbparams and it should fail - importer.configuration.dbparam_map = {"sslmode": "disable", "readOnly": "true"} + importer.configuration.base_configuration.dbparam_map = { + "sslmode": "disable", + "readOnly": "true", + } assert importer.run() == iliimporter.Importer.ERROR # change readonly to "false" by dbparams and it should succeed again - importer.configuration.dbparam_map = {"sslmode": "disable", "readOnly": "false"} + importer.configuration.base_configuration.dbparam_map = { + "sslmode": "disable", + "readOnly": "false", + } assert importer.run() == iliimporter.Importer.SUCCESS def print_info(self, text):