From a37d60bd8efd78cd71a109136c30b7c9c633f56a Mon Sep 17 00:00:00 2001 From: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> Date: Fri, 17 May 2024 10:26:43 +0100 Subject: [PATCH] Correct logic for DEFAULT config section population (#590) --- changelog.d/590.bugfix | 1 + sydent/config/__init__.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 changelog.d/590.bugfix diff --git a/changelog.d/590.bugfix b/changelog.d/590.bugfix new file mode 100644 index 00000000..f5aff74f --- /dev/null +++ b/changelog.d/590.bugfix @@ -0,0 +1 @@ +Prevent Sydent from overwriting user settings in the DEFAULT section upon startup. \ No newline at end of file diff --git a/sydent/config/__init__.py b/sydent/config/__init__.py index f3c78680..a7fd7cbd 100644 --- a/sydent/config/__init__.py +++ b/sydent/config/__init__.py @@ -219,14 +219,15 @@ def parse_config_file(self, config_file: str) -> None: :param config_file: the file to be parsed """ - # If the config file doesn't exist, prepopulate the config object - # with the defaults, in the right section. + # If the config file already exists, place all config options in + # the DEFAULT section, to avoid overriding any of the user's + # configured values in the sections other than DEFAULT. # - # Otherwise, we have to put the defaults in the DEFAULT section, - # to ensure that they don't override anyone's settings which are - # in their config file in the default section (which is likely, - # because sydent used to be braindead). - use_defaults = not os.path.exists(config_file) + # We don't always do this as earlier Sydent versions required + # users to put their settings in the DEFAULT section. + # + # We want to avoid overwriting those. + use_defaults = os.path.exists(config_file) cfg = ConfigParser() for sect, entries in CONFIG_DEFAULTS.items():