fix config save
authormarcelveldt <marcelvanderveldt@MacBook-Silvia.local>
Wed, 16 Oct 2019 00:09:26 +0000 (02:09 +0200)
committermarcelveldt <marcelvanderveldt@MacBook-Silvia.local>
Wed, 16 Oct 2019 00:09:26 +0000 (02:09 +0200)
music_assistant/config.py
music_assistant/web.py

index dd091d11eb9fa84cf5c4e64316b62a00d92bc18d..d2c754e8d137d345fc7b8062404e1446f068e807 100755 (executable)
@@ -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):
index 3f6b1290c5df17d921b1bfbe839791bbf8b6f7ae..7fef9991556b59a2b862fb22e472c7b44f8c6b4a 100755 (executable)
@@ -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):