django.contrib.sites.models: 55 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/django/contrib/sites/models.py

Stats: 0 executed, 47 missed, 8 excluded, 40 ignored

  1. from django.db import models
  2. from django.utils.translation import ugettext_lazy as _
  3. SITE_CACHE = {}
  4. class SiteManager(models.Manager):
  5. def get_current(self):
  6. """
  7. Returns the current ``Site`` based on the SITE_ID in the
  8. project's settings. The ``Site`` object is cached the first
  9. time it's retrieved from the database.
  10. """
  11. from django.conf import settings
  12. try:
  13. sid = settings.SITE_ID
  14. except AttributeError:
  15. from django.core.exceptions import ImproperlyConfigured
  16. 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.")
  17. try:
  18. current_site = SITE_CACHE[sid]
  19. except KeyError:
  20. current_site = self.get(pk=sid)
  21. SITE_CACHE[sid] = current_site
  22. return current_site
  23. def clear_cache(self):
  24. """Clears the ``Site`` object cache."""
  25. global SITE_CACHE
  26. SITE_CACHE = {}
  27. class Site(models.Model):
  28. domain = models.CharField(_('domain name'), max_length=100)
  29. name = models.CharField(_('display name'), max_length=50)
  30. objects = SiteManager()
  31. class Meta:
  32. db_table = 'django_site'
  33. verbose_name = _('site')
  34. verbose_name_plural = _('sites')
  35. ordering = ('domain',)
  36. def __unicode__(self):
  37. return self.domain
  38. def save(self, *args, **kwargs):
  39. super(Site, self).save(*args, **kwargs)
  40. # Cached information will likely be incorrect now.
  41. if self.id in SITE_CACHE:
  42. del SITE_CACHE[self.id]
  43. def delete(self):
  44. pk = self.pk
  45. super(Site, self).delete()
  46. try:
  47. del SITE_CACHE[pk]
  48. except KeyError:
  49. pass
  50. class RequestSite(object):
  51. """
  52. A class that shares the primary interface of Site (i.e., it has
  53. ``domain`` and ``name`` attributes) but gets its data from a Django
  54. HttpRequest object rather than from a database.
  55. The save() and delete() methods raise NotImplementedError.
  56. """
  57. def __init__(self, request):
  58. self.domain = self.name = request.get_host()
  59. def __unicode__(self):
  60. return self.domain
  61. def save(self, force_insert=False, force_update=False):
  62. raise NotImplementedError('RequestSite cannot be saved.')
  63. def delete(self):
  64. raise NotImplementedError('RequestSite cannot be deleted.')
  65. def get_current_site(request):
  66. """
  67. Checks if contrib.sites is installed and returns either the current
  68. ``Site`` object or a ``RequestSite`` object based on the request.
  69. """
  70. if Site._meta.installed:
  71. current_site = Site.objects.get_current()
  72. else:
  73. current_site = RequestSite(request)
  74. return current_site