From acaaf9af1e4075e364a469710e9d34e78c4eb64f Mon Sep 17 00:00:00 2001 From: marcelveldt Date: Wed, 16 Oct 2019 02:09:26 +0200 Subject: [PATCH] fix config save --- music_assistant/config.py | 40 ++++++++------------------------------- music_assistant/web.py | 1 + 2 files changed, 9 insertions(+), 32 deletions(-) diff --git a/music_assistant/config.py b/music_assistant/config.py index dd091d11..d2c754e8 100755 --- a/music_assistant/config.py +++ b/music_assistant/config.py @@ -8,42 +8,17 @@ from .utils import try_load_json_file, json, LOGGER from .constants import CONF_KEY_BASE, CONF_KEY_PLAYERSETTINGS, \ CONF_KEY_MUSICPROVIDERS, CONF_KEY_PLAYERPROVIDERS, EVENT_CONFIG_CHANGED -class WatchedDict(dict): - def __init__(self, mass, parent, savefunc, existing_dict=None): - self.mass = mass - self.parent = parent - self.savefunc = savefunc - if existing_dict: - for key, value in existing_dict.items(): - self[key] = value - - def __setitem__(self, key, new_value): - # optional processing here - if key not in self: - if isinstance(new_value, dict): - new_value = WatchedDict(self.mass, key, self.savefunc, new_value) - super().__setitem__(key, new_value) - elif self[key] != new_value: - # value changed - super().__setitem__(key, new_value) - self[key] = new_value - self.mass.event_loop.create_task( - self.mass.signal_event(EVENT_CONFIG_CHANGED, f"{self.parent}.{key}")) - self.savefunc() - -class MassConfig(WatchedDict): +class MassConfig(dict): ''' Class which holds our configuration ''' def __init__(self, mass): - self.mass = mass self.loading = False - self.savefunc = self.__save - self.parent = None - self[CONF_KEY_BASE] = WatchedDict(mass, None, self.__save) - self[CONF_KEY_MUSICPROVIDERS] = WatchedDict(mass, None, self.__save) - self[CONF_KEY_PLAYERPROVIDERS] = WatchedDict(mass, None, self.__save) - self[CONF_KEY_PLAYERSETTINGS] = WatchedDict(mass, None, self.__save) + self.mass = mass + self[CONF_KEY_BASE] = {} + self[CONF_KEY_MUSICPROVIDERS] = {} + self[CONF_KEY_PLAYERPROVIDERS] = {} + self[CONF_KEY_PLAYERSETTINGS] = {} self.__load() @property @@ -79,7 +54,7 @@ class MassConfig(WatchedDict): self[base_key][conf_key] = new_conf return self[base_key][conf_key] - def __save(self): + def save(self): ''' save config to file ''' if self.loading: LOGGER.warning("save already running") @@ -99,6 +74,7 @@ class MassConfig(WatchedDict): final_conf[key][subkey] = subvalue with open(conf_file, 'w') as f: f.write(json.dumps(final_conf, indent=4)) + LOGGER.info("Config saved!") self.loading = False def __load(self): diff --git a/music_assistant/web.py b/music_assistant/web.py index 3f6b1290..7fef9991 100755 --- a/music_assistant/web.py +++ b/music_assistant/web.py @@ -277,6 +277,7 @@ class Web(): self.mass.config[conf_key][conf_subkey] = new_values if conf_key != "player_settings": result["restart_required"] = True + self.mass.config.save() return web.json_response(result) async def json_rpc(self, request): -- 2.34.1