menus.models: 23 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/menus/models.py

Stats: 0 executed, 22 missed, 1 excluded, 18 ignored

  1. # -*- coding: utf-8 -*-
  2. from django.db import models
  3. class CacheKeyManager(models.Manager):
  4. def get_keys(self, site_id=None, language=None):
  5. ret = self.none()
  6. if not site_id and not language:
  7. # Both site and language are None - return everything
  8. ret = self.all()
  9. elif not site_id:
  10. ret = self.filter(language=language)
  11. elif not language:
  12. ret = self.filter(site=site_id)
  13. else:
  14. # Filter by site_id *and* by language.
  15. ret = self.filter(site=site_id).filter(language=language)
  16. return ret
  17. def get_or_create(self, **kwargs):
  18. try:
  19. return super(CacheKeyManager, self).get_or_create(**kwargs)
  20. except CacheKey.MultipleObjectsReturned:
  21. # Truncate the table, we don't want a funny cache object to cause
  22. # mayhem!
  23. CacheKey.objects.all().delete()
  24. return super(CacheKeyManager, self).get_or_create(**kwargs)
  25. class CacheKey(models.Model):
  26. '''
  27. This is to store a "set" of cache keys in a fashion where it's accessible
  28. by multiple processes / machines.
  29. Multiple Django instances will then share the keys.
  30. This allows for selective invalidation of the menu trees (per site, per
  31. language), in the cache.
  32. '''
  33. language = models.CharField(max_length=255)
  34. site = models.PositiveIntegerField()
  35. key = models.CharField(max_length=255)
  36. objects = CacheKeyManager()