summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/sites/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/sites/models.py')
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/models.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/sites/models.py b/lib/python2.7/site-packages/django/contrib/sites/models.py
deleted file mode 100644
index bbd85ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/models.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from __future__ import unicode_literals
-
-import string
-
-from django.db import models
-from django.db.models.signals import pre_save, pre_delete
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import python_2_unicode_compatible
-from django.core.exceptions import ValidationError
-
-
-SITE_CACHE = {}
-
-
-def _simple_domain_name_validator(value):
- """
- Validates that the given value contains no whitespaces to prevent common
- typos.
- """
- if not value:
- return
- checks = ((s in value) for s in string.whitespace)
- if any(checks):
- raise ValidationError(
- _("The domain name cannot contain any spaces or tabs."),
- code='invalid',
- )
-
-
-class SiteManager(models.Manager):
-
- def get_current(self):
- """
- Returns the current ``Site`` based on the SITE_ID in the
- project's settings. The ``Site`` object is cached the first
- time it's retrieved from the database.
- """
- from django.conf import settings
- try:
- sid = settings.SITE_ID
- except AttributeError:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("You're using the Django \"sites framework\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.")
- try:
- current_site = SITE_CACHE[sid]
- except KeyError:
- current_site = self.get(pk=sid)
- SITE_CACHE[sid] = current_site
- return current_site
-
- def clear_cache(self):
- """Clears the ``Site`` object cache."""
- global SITE_CACHE
- SITE_CACHE = {}
-
-
-@python_2_unicode_compatible
-class Site(models.Model):
-
- domain = models.CharField(_('domain name'), max_length=100,
- validators=[_simple_domain_name_validator])
- name = models.CharField(_('display name'), max_length=50)
- objects = SiteManager()
-
- class Meta:
- db_table = 'django_site'
- verbose_name = _('site')
- verbose_name_plural = _('sites')
- ordering = ('domain',)
-
- def __str__(self):
- return self.domain
-
-
-@python_2_unicode_compatible
-class RequestSite(object):
- """
- A class that shares the primary interface of Site (i.e., it has
- ``domain`` and ``name`` attributes) but gets its data from a Django
- HttpRequest object rather than from a database.
-
- The save() and delete() methods raise NotImplementedError.
- """
- def __init__(self, request):
- self.domain = self.name = request.get_host()
-
- def __str__(self):
- return self.domain
-
- def save(self, force_insert=False, force_update=False):
- raise NotImplementedError('RequestSite cannot be saved.')
-
- def delete(self):
- raise NotImplementedError('RequestSite cannot be deleted.')
-
-
-def get_current_site(request):
- """
- Checks if contrib.sites is installed and returns either the current
- ``Site`` object or a ``RequestSite`` object based on the request.
- """
- if Site._meta.installed:
- current_site = Site.objects.get_current()
- else:
- current_site = RequestSite(request)
- return current_site
-
-
-def clear_site_cache(sender, **kwargs):
- """
- Clears the cache (if primed) each time a site is saved or deleted
- """
- instance = kwargs['instance']
- try:
- del SITE_CACHE[instance.pk]
- except KeyError:
- pass
-pre_save.connect(clear_site_cache, sender=Site)
-pre_delete.connect(clear_site_cache, sender=Site)