
v^i
                 @   s:   d  d l  m Z d  d l m Z Gd d   d e  Z d S)    )SessionBase)signingc               @   s   e  Z d  Z d d   Z d d   Z d d d  Z d d	 d
  Z d d d  Z d d   Z d d   Z	 e
 d d    Z d S)SessionStorec             C   sR   y/ t  j |  j d |  j d |  j   d d SWn t k
 rM |  j   Yn Xi  S)z
        Load the data from the key itself instead of fetching from some
        external data store. Opposite of _get_session_key(), raise BadSignature
        if signature fails.
        
serializerZmax_agesaltz/django.contrib.sessions.backends.signed_cookies)r   loadssession_keyr   Zget_session_cookie_age	Exceptioncreate)self r   Q/tmp/pip-build-8lau8j11/django/django/contrib/sessions/backends/signed_cookies.pyload   s    		zSessionStore.loadc             C   s   d |  _  d S)z
        To create a new key, set the modified flag so that the cookie is set
        on the client for the current request.
        TN)modified)r   r   r   r   r
      s    zSessionStore.createFc             C   s   |  j    |  _ d |  _ d S)z
        To save, get the session key as a securely signed string and then set
        the modified flag so that the cookie is set on the client for the
        current request.
        TN)_get_session_key_session_keyr   )r   Zmust_creater   r   r   save"   s    zSessionStore.saveNc             C   s   d S)z
        This method makes sense when you're talking to a shared resource, but
        it doesn't matter when you're storing the information in the client's
        cookie.
        Fr   )r   r   r   r   r   exists+   s    zSessionStore.existsc             C   s   d |  _  i  |  _ d |  _ d S)z
        To delete, clear the session key and the underlying data structure
        and set the modified flag so that the cookie is set on the client for
        the current request.
         TN)r   Z_session_cacher   )r   r   r   r   r   delete3   s    		zSessionStore.deletec             C   s   |  j    d S)z
        Keep the same data but with a new key. Call save() and it will
        automatically save a cookie with a new key at the end of the request.
        N)r   )r   r   r   r   	cycle_key=   s    zSessionStore.cycle_keyc             C   s%   t  j |  j d d d d d |  j S)z
        Instead of generating a random string, generate a secure url-safe
        base64-encoded string of data as our session key.
        compressTr   z/django.contrib.sessions.backends.signed_cookiesr   )r   dumps_sessionr   )r   r   r   r   r   D   s    zSessionStore._get_session_keyc             C   s   d  S)Nr   )clsr   r   r   clear_expiredO   s    zSessionStore.clear_expired)__name__
__module____qualname__r   r
   r   r   r   r   r   classmethodr   r   r   r   r   r      s   	
r   N)Z%django.contrib.sessions.backends.baser   Zdjango.corer   r   r   r   r   r   <module>   s   