diff options
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/sessions/backends/db.py')
-rw-r--r-- | lib/python2.7/site-packages/django/contrib/sessions/backends/db.py | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py deleted file mode 100644 index 7be99c3..0000000 --- a/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py +++ /dev/null @@ -1,85 +0,0 @@ -import logging - -from django.contrib.sessions.backends.base import SessionBase, CreateError -from django.core.exceptions import SuspiciousOperation -from django.db import IntegrityError, transaction, router -from django.utils import timezone -from django.utils.encoding import force_text - -class SessionStore(SessionBase): - """ - Implements database session store. - """ - def __init__(self, session_key=None): - super(SessionStore, self).__init__(session_key) - - def load(self): - try: - s = Session.objects.get( - session_key=self.session_key, - expire_date__gt=timezone.now() - ) - return self.decode(s.session_data) - except (Session.DoesNotExist, SuspiciousOperation) as e: - if isinstance(e, SuspiciousOperation): - logger = logging.getLogger('django.security.%s' % - e.__class__.__name__) - logger.warning(force_text(e)) - self.create() - return {} - - def exists(self, session_key): - return Session.objects.filter(session_key=session_key).exists() - - def create(self): - while True: - self._session_key = self._get_new_session_key() - try: - # Save immediately to ensure we have a unique entry in the - # database. - self.save(must_create=True) - except CreateError: - # Key wasn't unique. Try again. - continue - self.modified = True - self._session_cache = {} - return - - def save(self, must_create=False): - """ - Saves the current session data to the database. If 'must_create' is - True, a database error will be raised if the saving operation doesn't - create a *new* entry (as opposed to possibly updating an existing - entry). - """ - obj = Session( - session_key=self._get_or_create_session_key(), - session_data=self.encode(self._get_session(no_load=must_create)), - expire_date=self.get_expiry_date() - ) - using = router.db_for_write(Session, instance=obj) - try: - with transaction.atomic(using=using): - obj.save(force_insert=must_create, using=using) - except IntegrityError: - if must_create: - raise CreateError - raise - - def delete(self, session_key=None): - if session_key is None: - if self.session_key is None: - return - session_key = self.session_key - try: - Session.objects.get(session_key=session_key).delete() - except Session.DoesNotExist: - pass - - @classmethod - def clear_expired(cls): - Session.objects.filter(expire_date__lt=timezone.now()).delete() - - -# At bottom to avoid circular import -from django.contrib.sessions.models import Session |