diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-03-13 23:02:31 +0000 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2012-03-13 23:02:31 +0000 |
| commit | 4b14546215ad4ef15f04e748e3b5f0da7b613b45 (patch) | |
| tree | e9aa481e6f4d05bafecca4f1819ae416a2573d59 /django | |
| parent | 2a0f4578efdda44325df9b32ff5f1790ca1e7752 (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.py | 19 |
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) + |
