django.contrib.sessions.backends.cached_db: 36 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/sessions/backends/cached_db.py

Stats: 0 executed, 33 missed, 3 excluded, 24 ignored

  1. """
  2. Cached, database-backed sessions.
  3. """
  4. from django.conf import settings
  5. from django.contrib.sessions.backends.db import SessionStore as DBStore
  6. from django.core.cache import cache
  7. KEY_PREFIX = "django.contrib.sessions.cached_db"
  8. class SessionStore(DBStore):
  9. """
  10. Implements cached, database backed sessions.
  11. """
  12. def __init__(self, session_key=None):
  13. super(SessionStore, self).__init__(session_key)
  14. @property
  15. def cache_key(self):
  16. return KEY_PREFIX + self._get_or_create_session_key()
  17. def load(self):
  18. try:
  19. data = cache.get(self.cache_key, None)
  20. except Exception:
  21. # Some backends (e.g. memcache) raise an exception on invalid
  22. # cache keys. If this happens, reset the session. See #17810.
  23. data = None
  24. if data is None:
  25. data = super(SessionStore, self).load()
  26. cache.set(self.cache_key, data, settings.SESSION_COOKIE_AGE)
  27. return data
  28. def exists(self, session_key):
  29. if (KEY_PREFIX + session_key) in cache:
  30. return True
  31. return super(SessionStore, self).exists(session_key)
  32. def save(self, must_create=False):
  33. super(SessionStore, self).save(must_create)
  34. cache.set(self.cache_key, self._session, settings.SESSION_COOKIE_AGE)
  35. def delete(self, session_key=None):
  36. super(SessionStore, self).delete(session_key)
  37. if session_key is None:
  38. if self.session_key is None:
  39. return
  40. session_key = self.session_key
  41. cache.delete(KEY_PREFIX + session_key)
  42. def flush(self):
  43. """
  44. Removes the current session data from the database and regenerates the
  45. key.
  46. """
  47. self.clear()
  48. self.delete(self.session_key)
  49. self.create()