add settings cleanup function

Clean up and remove empty config if everything is set to default values
This commit is contained in:
ntoff 2017-11-18 06:31:22 +10:00
parent f13fda67e2
commit d2f1ed57ad

View File

@ -32,6 +32,34 @@ class FanSliderPlugin(octoprint.plugin.StartupPlugin,
if "notifyDelay" in data.keys(): if "notifyDelay" in data.keys():
s.setInt(["notifyDelay"], data["notifyDelay"]) s.setInt(["notifyDelay"], data["notifyDelay"])
self.get_settings_updates() self.get_settings_updates()
#clean up settings if everything's default
self.on_settings_cleanup()
s.save()
#function stolen...err borrowed :D from types.py @ 1663
def on_settings_cleanup(self):
import octoprint.util
from octoprint.settings import NoSuchSettingsPath
try:
config = self._settings.get_all_data(merged=False, incl_defaults=False, error_on_path=True)
except NoSuchSettingsPath:
return
if config is None:
self._settings.clean_all_data()
return
if self.config_version_key in config and config[self.config_version_key] is None:
del config[self.config_version_key]
defaults = self.get_settings_defaults()
diff = octoprint.util.dict_minimal_mergediff(defaults, config)
if not diff:
self._settings.clean_all_data()
else:
self._settings.set([], diff)
def get_assets(self): def get_assets(self):
return dict( return dict(