summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2012-03-13 23:02:31 +0000
committerAymeric Augustin <aymeric.augustin@m4x.org>2012-03-13 23:02:31 +0000
commit4b14546215ad4ef15f04e748e3b5f0da7b613b45 (patch)
treee9aa481e6f4d05bafecca4f1819ae416a2573d59 /django
parent2a0f4578efdda44325df9b32ff5f1790ca1e7752 (diff)
Fixed #17895 -- Made override_settings send the setting_changed signal both when a setting is overridden and when it's restored.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17708 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/test/utils.py19
1 files changed, 9 insertions, 10 deletions
diff --git a/django/test/utils.py b/django/test/utils.py
index 87f2311897..ed5ab590a7 100644
--- a/django/test/utils.py
+++ b/django/test/utils.py
@@ -167,15 +167,6 @@ def restore_template_loaders():
delattr(loader, RESTORE_LOADERS_ATTR)
-class OverrideSettingsHolder(UserSettingsHolder):
- """
- A custom setting holder that sends a signal upon change.
- """
- def __setattr__(self, name, value):
- UserSettingsHolder.__setattr__(self, name, value)
- setting_changed.send(sender=self.__class__, setting=name, value=value)
-
-
class override_settings(object):
"""
Acts as either a decorator, or a context manager. If it's a decorator it
@@ -215,10 +206,18 @@ class override_settings(object):
return inner
def enable(self):
- override = OverrideSettingsHolder(settings._wrapped)
+ override = UserSettingsHolder(settings._wrapped)
for key, new_value in self.options.items():
setattr(override, key, new_value)
settings._wrapped = override
+ for key, new_value in self.options.items():
+ setting_changed.send(sender=settings._wrapped.__class__,
+ setting=key, value=new_value)
def disable(self):
settings._wrapped = self.wrapped
+ for key in self.options:
+ new_value = getattr(settings, key, None)
+ setting_changed.send(sender=settings._wrapped.__class__,
+ setting=key, value=new_value)
+