3
(h                 @   s8   d dl mZ d dlmZ d dlmZ G dd deZdS )    )settings)SessionBase)signingc               @   sV   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   s:   yt j| j| jtjddS  tk
r4   | j  Y nX i S )z
        We load the data from the key itself instead of fetching from
        some external data store. Opposite of _get_session_key(),
        raises BadSignature if signature fails.
        z/django.contrib.sessions.backends.signed_cookies)
serializerZmax_agesalt)r   loadssession_keyr   r   ZSESSION_COOKIE_AGE	Exceptioncreate)self r   S/tmp/pip-install-q3hcpn_q/Django/django/contrib/sessions/backends/signed_cookies.pyload   s    zSessionStore.loadc             C   s
   d| _ dS )z
        To create a new key, we simply make sure that the modified flag is set
        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, we 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, we 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   _session_cacher   )r   r	   r   r   r   delete4   s    zSessionStore.deletec             C   s   | j   dS )z
        Keeps the same data but with a new key.  To do this, we just have to
        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 | di }tj|dd| jdS )z
        Most session backends don't need to override this method, but we do,
        because instead of generating a random string, we want to actually
        generate a secure url-safe Base64-encoded string of data as our
        session key.
        r   Tz/django.contrib.sessions.backends.signed_cookies)compressr   r   )getattrr   dumpsr   )r   Zsession_cacher   r   r   r   F   s
    zSessionStore._get_session_keyc             C   s   d S )Nr   )clsr   r   r   clear_expiredT   s    zSessionStore.clear_expired)F)N)N)__name__
__module____qualname__r   r   r   r   r   r   r   classmethodr   r   r   r   r   r      s   
	


r   N)Zdjango.confr   Z%django.contrib.sessions.backends.baser   Zdjango.corer   r   r   r   r   r   <module>   s   