PageRenderTime 28ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/django/contrib/sessions/backends/cached_db.py

https://code.google.com/p/mango-py/
Python | 46 lines | 27 code | 9 blank | 10 comment | 2 complexity | 9dc87669641de61a5bae2279ba91793e MD5 | raw file
Possible License(s): BSD-3-Clause
  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. def load(self):
  15. data = cache.get(KEY_PREFIX + self.session_key, None)
  16. if data is None:
  17. data = super(SessionStore, self).load()
  18. cache.set(KEY_PREFIX + self.session_key, data,
  19. settings.SESSION_COOKIE_AGE)
  20. return data
  21. def exists(self, session_key):
  22. return super(SessionStore, self).exists(session_key)
  23. def save(self, must_create=False):
  24. super(SessionStore, self).save(must_create)
  25. cache.set(KEY_PREFIX + self.session_key, self._session,
  26. settings.SESSION_COOKIE_AGE)
  27. def delete(self, session_key=None):
  28. super(SessionStore, self).delete(session_key)
  29. cache.delete(KEY_PREFIX + (session_key or self.session_key))
  30. def flush(self):
  31. """
  32. Removes the current session data from the database and regenerates the
  33. key.
  34. """
  35. self.clear()
  36. self.delete(self.session_key)
  37. self.create()