From d818e0c9b2b88276cc499974f9eee893170bf0a8 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Mon, 20 Jan 2014 10:45:21 +0800 Subject: Fixed #16905 -- Added extensible checks (nee validation) framework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is the result of Christopher Medrela's 2013 Summer of Code project. Thanks also to Preston Holmes, Tim Graham, Anssi Kääriäinen, Florian Apolloner, and Alex Gaynor for review notes along the way. Also: Fixes #8579, fixes #3055, fixes #19844. --- django/conf/__init__.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'django/conf/__init__.py') diff --git a/django/conf/__init__.py b/django/conf/__init__.py index e10d4b1afb..aad67bd7f5 100644 --- a/django/conf/__init__.py +++ b/django/conf/__init__.py @@ -99,7 +99,7 @@ class Settings(BaseSettings): ) tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS") - + self._explicit_settings = set() for setting in dir(mod): if setting.isupper(): setting_value = getattr(mod, setting) @@ -110,6 +110,7 @@ class Settings(BaseSettings): "Please fix your settings." % setting) setattr(self, setting, setting_value) + self._explicit_settings.add(setting) if not self.SECRET_KEY: raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") @@ -126,6 +127,9 @@ class Settings(BaseSettings): os.environ['TZ'] = self.TIME_ZONE time.tzset() + def is_overridden(self, setting): + return setting in self._explicit_settings + class UserSettingsHolder(BaseSettings): """ @@ -159,4 +163,10 @@ class UserSettingsHolder(BaseSettings): def __dir__(self): return list(self.__dict__) + dir(self.default_settings) + def is_overridden(self, setting): + if setting in self._deleted: + return False + else: + return self.default_settings.is_overridden(setting) + settings = LazySettings() -- cgit v1.2.1