3
(h
                 @   sP   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 dZ
G dd deZdS )	    )settings)CreateErrorSessionBaseUpdateError)caches)rangezdjango.contrib.sessions.cachec                   sj   e Zd ZdZeZd fdd	Zedd Zdd Z	d	d
 Z
dddZdd ZdddZedd Z  ZS )SessionStorez&
    A cache-based session store.
    Nc                s    t tj | _tt| j| d S )N)r   r   ZSESSION_CACHE_ALIAS_cachesuperr   __init__)selfsession_key)	__class__ J/tmp/pip-install-q3hcpn_q/Django/django/contrib/sessions/backends/cache.pyr      s    zSessionStore.__init__c             C   s   | j | j  S )N)cache_key_prefixZ_get_or_create_session_key)r   r   r   r   	cache_key   s    zSessionStore.cache_keyc             C   sB   y| j j| j}W n tk
r*   d }Y nX |d k	r8|S d | _i S )N)r	   getr   	Exception_session_key)r   Zsession_datar   r   r   load   s    
zSessionStore.loadc             C   sX   xJt dD ]>}| j | _y| jdd W n tk
r>   w
Y nX d| _d S W tdd S )Ni'  T)must_createzOUnable to create a new session key. It is likely that the cache is unavailable.)r   Z_get_new_session_keyr   saver   modifiedRuntimeError)r   ir   r   r   create%   s    
zSessionStore.createFc             C   sl   | j d kr| j S |r | jj}n | jj| jd k	r<| jj}nt|| j| j|d| j	 }|rh| rht
d S )N)Zno_load)r   r   r	   addr   r   setr   Z_get_sessionZget_expiry_ager   )r   r   funcresultr   r   r   r   7   s    





zSessionStore.savec             C   s   |o| j | | jkS )N)r   r	   )r   r   r   r   r   existsF   s    zSessionStore.existsc             C   s2   |d kr| j d krd S | j }| jj| j|  d S )N)r   r	   deleter   )r   r   r   r   r   r"   I   s
    
zSessionStore.deletec             C   s   d S )Nr   )clsr   r   r   clear_expiredP   s    zSessionStore.clear_expired)N)F)N)__name__
__module____qualname____doc__
KEY_PREFIXr   r   propertyr   r   r   r   r!   r"   classmethodr$   __classcell__r   r   )r   r   r      s   

r   N)Zdjango.confr   Z%django.contrib.sessions.backends.baser   r   r   Zdjango.core.cacher   Zdjango.utils.six.movesr   r)   r   r   r   r   r   <module>   s
   