Skip to content

Commit

Permalink
FIxed #10130: you may now delete attributes on settings. Thanks, jc…
Browse files Browse the repository at this point in the history
…assee.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@11824 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jacobian committed Dec 12, 2009
1 parent f761802 commit ac8da7b
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 @@ -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.
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 ac8da7b

Please sign in to comment.