diff --git a/requirements.txt b/requirements.txt index 934e185..b1ec2cd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,5 +9,6 @@ requests==2.32.0 SQLAlchemy==2.0.29 Werkzeug==3.0.3 email_validator==2.1.0.post1 -qwc-services-core==1.3.29 +qwc-services-core==1.3.30 python-i18n==0.3.9 +deepmerge==1.1.0 diff --git a/schemas/qwc-admin-gui.json b/schemas/qwc-admin-gui.json index 3b764c7..847318c 100644 --- a/schemas/qwc-admin-gui.json +++ b/schemas/qwc-admin-gui.json @@ -24,6 +24,10 @@ "description": "DB connection URL", "type": "string" }, + "qwc_config_schema": { + "description": "The name of the DB schema which stores the qwc config. Default: qwc_config", + "type": "string" + }, "config_generator_service_url": { "description": "Config generator URL", "type": "string" diff --git a/src/access_control.py b/src/access_control.py index c0d7d91..7b315eb 100644 --- a/src/access_control.py +++ b/src/access_control.py @@ -20,7 +20,10 @@ def __init__(self, handler, logger): def is_admin(self, identity): db_engine = self.handler().db_engine() - self.config_models = ConfigModels(db_engine, self.handler().conn_str()) + self.config_models = ConfigModels( + db_engine, self.handler().conn_str(), + qwc_config_schema=self.handler().qwc_config_schema() + ) # Extract user infos from identity if isinstance(identity, dict): diff --git a/src/controllers/controller.py b/src/controllers/controller.py index 0d73ada..d7a7149 100644 --- a/src/controllers/controller.py +++ b/src/controllers/controller.py @@ -91,7 +91,10 @@ def setup_models(self): self.config = config_handler.config() db_engine = config_handler.db_engine() - self.config_models = ConfigModels(db_engine, config_handler.conn_str()) + self.config_models = ConfigModels( + db_engine, config_handler.conn_str(), + qwc_config_schema=config_handler.qwc_config_schema() + ) self.Group = self.config_models.model('groups') self.Permission = self.config_models.model('permissions') diff --git a/src/plugins/alkis/controllers/alkis_controller.py b/src/plugins/alkis/controllers/alkis_controller.py index a0c3519..fce6132 100644 --- a/src/plugins/alkis/controllers/alkis_controller.py +++ b/src/plugins/alkis/controllers/alkis_controller.py @@ -47,7 +47,10 @@ def __init__(self, app, handler): self.handler = handler config_handler = handler() db_engine = config_handler.db_engine() - self.config_models = ConfigModels(db_engine, config_handler.conn_str(), ["alkis"]) + self.config_models = ConfigModels( + db_engine, config_handler.conn_str(), ["alkis"], + qwc_config_schema=config_handler.qwc_config_schema() + ) self.resources = self.config_models.model('resources') self.alkis = self.config_models.model('alkis') diff --git a/src/plugins/themes/controllers/templates_controller.py b/src/plugins/themes/controllers/templates_controller.py index 97d7e0e..29fe94c 100644 --- a/src/plugins/themes/controllers/templates_controller.py +++ b/src/plugins/themes/controllers/templates_controller.py @@ -27,7 +27,10 @@ def __init__(self, app, handler, featureInfoconfig): self.ows_prefix = urlparse(current_handler.config().get("ows_prefix", "")).path.rstrip("/") + "/" self.default_qgis_server_url = current_handler.config().get("default_qgis_server_url") db_engine = current_handler.db_engine() - self.config_models = ConfigModels(db_engine, current_handler.conn_str()) + self.config_models = ConfigModels( + db_engine, current_handler.conn_str(), + qwc_config_schema=current_handler.qwc_config_schema() + ) self.resources = self.config_models.model('resources') app.add_url_rule( diff --git a/src/plugins/themes/controllers/themes_controller.py b/src/plugins/themes/controllers/themes_controller.py index f785421..29ad0c9 100644 --- a/src/plugins/themes/controllers/themes_controller.py +++ b/src/plugins/themes/controllers/themes_controller.py @@ -122,7 +122,10 @@ def __init__(self, app, handler, themesconfig): config_handler = handler() db_engine = config_handler.db_engine() - self.config_models = ConfigModels(db_engine, config_handler.conn_str()) + self.config_models = ConfigModels( + db_engine, config_handler.conn_str(), + qwc_config_schema=current_handler.qwc_config_schema() + ) self.resources = self.config_models.model('resources') def index(self): diff --git a/src/server.py b/src/server.py index f16fd0f..f704d4d 100644 --- a/src/server.py +++ b/src/server.py @@ -95,6 +95,9 @@ def conn_str(self): return self._config.get( 'db_url', 'postgresql:///?service=qwc_configdb') + def qwc_config_schema(self): + return self._config.get('qwc_config_schema', 'qwc_config') + def handler(): tenant = tenant_handler.tenant()