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

Stats: 0 executed, 42 missed, 6 excluded, 29 ignored

  1. from django.contrib.sessions.backends.base import SessionBase, CreateError
  2. from django.core.exceptions import SuspiciousOperation
  3. from django.db import IntegrityError, transaction, router
  4. from django.utils.encoding import force_unicode
  5. from django.utils import timezone
  6. class SessionStore(SessionBase):
  7. """
  8. Implements database session store.
  9. """
  10. def __init__(self, session_key=None):
  11. super(SessionStore, self).__init__(session_key)
  12. def load(self):
  13. try:
  14. s = Session.objects.get(
  15. session_key = self.session_key,
  16. expire_date__gt=timezone.now()
  17. )
  18. return self.decode(force_unicode(s.session_data))
  19. except (Session.DoesNotExist, SuspiciousOperation):
  20. self.create()
  21. return {}
  22. def exists(self, session_key):
  23. return Session.objects.filter(session_key=session_key).exists()
  24. def create(self):
  25. while True:
  26. self._session_key = self._get_new_session_key()
  27. try:
  28. # Save immediately to ensure we have a unique entry in the
  29. # database.
  30. self.save(must_create=True)
  31. except CreateError:
  32. # Key wasn't unique. Try again.
  33. continue
  34. self.modified = True
  35. self._session_cache = {}
  36. return
  37. def save(self, must_create=False):
  38. """
  39. Saves the current session data to the database. If 'must_create' is
  40. True, a database error will be raised if the saving operation doesn't
  41. create a *new* entry (as opposed to possibly updating an existing
  42. entry).
  43. """
  44. obj = Session(
  45. session_key=self._get_or_create_session_key(),
  46. session_data=self.encode(self._get_session(no_load=must_create)),
  47. expire_date=self.get_expiry_date()
  48. )
  49. using = router.db_for_write(Session, instance=obj)
  50. sid = transaction.savepoint(using=using)
  51. try:
  52. obj.save(force_insert=must_create, using=using)
  53. except IntegrityError:
  54. if must_create:
  55. transaction.savepoint_rollback(sid, using=using)
  56. raise CreateError
  57. raise
  58. def delete(self, session_key=None):
  59. if session_key is None:
  60. if self.session_key is None:
  61. return
  62. session_key = self.session_key
  63. try:
  64. Session.objects.get(session_key=session_key).delete()
  65. except Session.DoesNotExist:
  66. pass
  67. # At bottom to avoid circular import
  68. from django.contrib.sessions.models import Session