Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

FIxed #10130: you may now delete attributes on `settings`. Thanks, jc…

…assee.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11824 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit ac8da7b36f353ffc225ee27b0aeb96f8912b9362 1 parent f761802
Jacob Kaplan-Moss jacobian authored
7 django/utils/functional.py
View
@@ -277,6 +277,13 @@ def __setattr__(self, name, value):
self._setup()
setattr(self._wrapped, name, value)
+ def __delattr__(self, name):
+ if name == "_wrapped":
+ raise TypeError("can't delete _wrapped.")
+ if self._wrapped is None:
+ self._setup()
+ delattr(self._wrapped, name)
+
def _setup(self):
"""
Must be implemented by subclasses to initialise the wrapped object.
0  tests/regressiontests/settings/__init__.py
View
No changes.
0  tests/regressiontests/settings/models.py
View
No changes.
17 tests/regressiontests/settings/tests.py
View
@@ -0,0 +1,17 @@
+import unittest
+from django.conf import settings
+
+class SettingsTests(unittest.TestCase):
+
+ #
+ # Regression tests for #10130: deleting settings.
+ #
+
+ def test_settings_delete(self):
+ settings.TEST = 'test'
+ self.assertEqual('test', settings.TEST)
+ del settings.TEST
+ self.assertRaises(AttributeError, getattr, settings, 'TEST')
+
+ def test_settings_delete_wrapped(self):
+ self.assertRaises(TypeError, delattr, settings, '_wrapped')
Please sign in to comment.
Something went wrong with that request. Please try again.