Skip to content

Commit

Permalink
[1.1.X] Fixed #10130: you may now delete attributes on settings. Th…
Browse files Browse the repository at this point in the history
…anks, jcassee.

Backport of r11824.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@11825 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jacobian committed Dec 12, 2009
1 parent 5e6c3d2 commit c1a8bd6
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 0 deletions.
7 changes: 7 additions & 0 deletions django/utils/functional.py
Expand Up @@ -280,6 +280,13 @@ def __setattr__(self, name, value):
self._setup() self._setup()
setattr(self._wrapped, name, value) 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): def _setup(self):
""" """
Must be implemented by subclasses to initialise the wrapped object. Must be implemented by subclasses to initialise the wrapped object.
Expand Down
Empty file.
Empty file.
17 changes: 17 additions & 0 deletions tests/regressiontests/settings/tests.py
@@ -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')

0 comments on commit c1a8bd6

Please sign in to comment.