From d28b6e96c89de081ec2a2bffc0a79054e5c99804 Mon Sep 17 00:00:00 2001 From: axolotle Date: Sun, 26 Nov 2023 17:01:38 +0100 Subject: [PATCH] configpanel: raise when unknown filter key --- src/utils/configpanel.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/utils/configpanel.py b/src/utils/configpanel.py index e7dd093527..297dcd65f8 100644 --- a/src/utils/configpanel.py +++ b/src/utils/configpanel.py @@ -53,6 +53,7 @@ if TYPE_CHECKING: from moulinette.utils.log import MoulinetteLogger + logger = cast(MoulinetteLogger, getLogger("yunohost.configpanel")) else: logger = getLogger("yunohost.configpanel") @@ -715,19 +716,26 @@ def filter_keys( raw_config = self._get_raw_config() panel_id, section_id, option_id = self.filter_key - if panel_id: - raw_config = filter_keys(raw_config, panel_id, ConfigPanelModel) - if section_id: - raw_config[panel_id] = filter_keys( - raw_config[panel_id], section_id, PanelModel - ) + try: + if panel_id: + raw_config = filter_keys(raw_config, panel_id, ConfigPanelModel) - if option_id: - raw_config[panel_id][section_id] = filter_keys( - raw_config[panel_id][section_id], option_id, SectionModel + if section_id: + raw_config[panel_id] = filter_keys( + raw_config[panel_id], section_id, PanelModel ) + if option_id: + raw_config[panel_id][section_id] = filter_keys( + raw_config[panel_id][section_id], option_id, SectionModel + ) + except KeyError: + raise YunohostValidationError( + "config_unknown_filter_key", + filter_key=".".join([k for k in self.filter_key if k]), + ) + return raw_config def _get_partial_raw_settings_and_mutate_config(