django.contrib.sites.managers: 28 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/managers.py

Stats: 0 executed, 25 missed, 3 excluded, 13 ignored

  1. from django.conf import settings
  2. from django.db import models
  3. from django.db.models.fields import FieldDoesNotExist
  4. class CurrentSiteManager(models.Manager):
  5. "Use this to limit objects to those associated with the current site."
  6. def __init__(self, field_name=None):
  7. super(CurrentSiteManager, self).__init__()
  8. self.__field_name = field_name
  9. self.__is_validated = False
  10. def _validate_field_name(self):
  11. field_names = self.model._meta.get_all_field_names()
  12. # If a custom name is provided, make sure the field exists on the model
  13. if self.__field_name is not None and self.__field_name not in field_names:
  14. raise ValueError("%s couldn't find a field named %s in %s." % \
  15. (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
  16. # Otherwise, see if there is a field called either 'site' or 'sites'
  17. else:
  18. for potential_name in ['site', 'sites']:
  19. if potential_name in field_names:
  20. self.__field_name = potential_name
  21. self.__is_validated = True
  22. break
  23. # Now do a type check on the field (FK or M2M only)
  24. try:
  25. field = self.model._meta.get_field(self.__field_name)
  26. if not isinstance(field, (models.ForeignKey, models.ManyToManyField)):
  27. raise TypeError("%s must be a ForeignKey or ManyToManyField." %self.__field_name)
  28. except FieldDoesNotExist:
  29. raise ValueError("%s couldn't find a field named %s in %s." % \
  30. (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
  31. self.__is_validated = True
  32. def get_query_set(self):
  33. if not self.__is_validated:
  34. self._validate_field_name()
  35. return super(CurrentSiteManager, self).get_query_set().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})