summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-06-22 06:50:25 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-06-22 06:50:25 +0000
commit1fc0077a95aff89fde16a8496884d2ca2c4de7c9 (patch)
tree38cd1fd589991b89524870b779d5808199dea34c
parentb83fcacfcc42f4288712d3ffe59c87b847936f61 (diff)
Fixed #7517 -- Added code to remove Sites from the site cache when they are deleted. Thanks to Marc Fargas for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7724 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/sites/models.py9
-rw-r--r--django/contrib/sites/tests.py13
2 files changed, 22 insertions, 0 deletions
diff --git a/django/contrib/sites/models.py b/django/contrib/sites/models.py
index fb6d0a2b1e..c928a4e852 100644
--- a/django/contrib/sites/models.py
+++ b/django/contrib/sites/models.py
@@ -44,6 +44,15 @@ class Site(models.Model):
def __unicode__(self):
return self.domain
+ def delete(self):
+ pk = self.pk
+ super(Site, self).delete()
+ try:
+ del(SITE_CACHE[pk])
+ except KeyError:
+ pass
+
+
class RequestSite(object):
"""
A class that shares the primary interface of Site (i.e., it has
diff --git a/django/contrib/sites/tests.py b/django/contrib/sites/tests.py
new file mode 100644
index 0000000000..d2ec331eca
--- /dev/null
+++ b/django/contrib/sites/tests.py
@@ -0,0 +1,13 @@
+"""
+>>> # Make sure that get_current() does not return a deleted Site object.
+>>> from django.contrib.sites.models import Site
+>>> s = Site.objects.get_current()
+>>> s
+<Site: example.com>
+
+>>> s.delete()
+>>> Site.objects.get_current()
+Traceback (most recent call last):
+...
+DoesNotExist: Site matching query does not exist.
+"""