web/lib/django/contrib/sessions/backends/cached_db.py
changeset 0 0d40e90630ef
equal deleted inserted replaced
-1:000000000000 0:0d40e90630ef
       
     1 """
       
     2 Cached, database-backed sessions.
       
     3 """
       
     4 
       
     5 from django.conf import settings
       
     6 from django.contrib.sessions.backends.db import SessionStore as DBStore
       
     7 from django.core.cache import cache
       
     8 
       
     9 class SessionStore(DBStore):
       
    10     """
       
    11     Implements cached, database backed sessions.
       
    12     """
       
    13 
       
    14     def __init__(self, session_key=None):
       
    15         super(SessionStore, self).__init__(session_key)
       
    16 
       
    17     def load(self):
       
    18         data = cache.get(self.session_key, None)
       
    19         if data is None:
       
    20             data = super(SessionStore, self).load()
       
    21             cache.set(self.session_key, data, settings.SESSION_COOKIE_AGE)
       
    22         return data
       
    23 
       
    24     def exists(self, session_key):
       
    25         return super(SessionStore, self).exists(session_key)
       
    26 
       
    27     def save(self, must_create=False):
       
    28         super(SessionStore, self).save(must_create)
       
    29         cache.set(self.session_key, self._session, settings.SESSION_COOKIE_AGE)
       
    30 
       
    31     def delete(self, session_key=None):
       
    32         super(SessionStore, self).delete(session_key)
       
    33         cache.delete(session_key or self.session_key)
       
    34 
       
    35     def flush(self):
       
    36         """
       
    37         Removes the current session data from the database and regenerates the
       
    38         key.
       
    39         """
       
    40         self.clear()
       
    41         self.delete(self.session_key)
       
    42         self.create()