From 1872082932648c3c563194e4bed4869c7190da9b Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Wed, 18 Aug 2010 13:03:24 +0200 Subject: [PATCH] Calculate the active settings dynamically, so tests can do mopidy.settings.local.clear() to get rid of local settings --- mopidy/utils/settings.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/mopidy/utils/settings.py b/mopidy/utils/settings.py index 18f59df7..1f37cdd1 100644 --- a/mopidy/utils/settings.py +++ b/mopidy/utils/settings.py @@ -12,11 +12,9 @@ logger = logging.getLogger('mopidy.utils.settings') class SettingsProxy(object): def __init__(self, default_settings_module): - self.default_settings = self._get_settings_dict_from_module( + self.default = self._get_settings_dict_from_module( default_settings_module) - self.local_settings = self._get_local_settings() - self.raw_settings = copy(self.default_settings) - self.raw_settings.update(self.local_settings) + self.local = self._get_local_settings() def _get_local_settings(self): dotdir = os.path.expanduser(u'~/.mopidy/') @@ -35,12 +33,18 @@ class SettingsProxy(object): def _is_setting(self, name): return name.isupper() + @property + def active(self): + active = copy(self.default) + active.update(self.local) + return active + def __getattr__(self, attr): if not self._is_setting(attr): return - if attr not in self.raw_settings: + if attr not in self.active: raise SettingsError(u'Setting "%s" is not set.' % attr) - value = self.raw_settings[attr] + value = self.active[attr] if type(value) != bool and not value: raise SettingsError(u'Setting "%s" is empty.' % attr) return value @@ -52,7 +56,7 @@ class SettingsProxy(object): raise SettingsError(u'Settings validation failed.') def get_errors(self): - return validate_settings(self.default_settings, self.local_settings) + return validate_settings(self.default, self.local) def get_errors_as_string(self): lines = [] @@ -114,8 +118,8 @@ def list_settings_optparse_callback(*args): from mopidy import settings errors = settings.get_errors() lines = [] - for (key, value) in sorted(settings.raw_settings.iteritems()): - default_value = settings.default_settings.get(key) + for (key, value) in sorted(settings.active.iteritems()): + default_value = settings.default.get(key) if key.endswith('PASSWORD'): value = u'********' lines.append(u'%s:' % key)