Commit c1a8bd67 authored by Jacob Kaplan-Moss's avatar Jacob Kaplan-Moss
Browse files

[1.1.X] Fixed #10130: you may now delete attributes on `settings`. Thanks, jcassee.

Backport of r11824.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@11825 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 5e6c3d24
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -280,6 +280,13 @@ class LazyObject(object):
                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 −0

Empty file added.

+0 −0

Empty file added.

+17 −0
Original line number Diff line number Diff line
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')