
vÅÏ^™
  ã               @   s\   d  d l  m Z d  d l m Z m Z m Z d  d l m Z d Z Gd d „  d e ƒ Z	 d S)é    )Úsettings)ÚCreateErrorÚSessionBaseÚUpdateError)Úcacheszdjango.contrib.sessions.cachec                   s—   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 ‡  S)ÚSessionStorez&
    A cache-based session store.
    Nc                s$   t  t j |  _ t ƒ  j | ƒ d  S)N)r   r   ZSESSION_CACHE_ALIASÚ_cacheÚsuperÚ__init__)ÚselfÚsession_key)Ú	__class__© úH/tmp/pip-build-8lau8j11/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   sQ   y |  j  j |  j ƒ } Wn t k
 r3 d  } Yn X| d  k	 rD | Sd  |  _ i  S)N)r   Úgetr   Ú	ExceptionÚ_session_key)r   Zsession_datar   r   r   Úload   s    	zSessionStore.loadc             C   sl   xY t  d ƒ D]K } |  j ƒ  |  _ y |  j d d ƒ Wn t k
 rM w Yn Xd |  _ d  SWt d ƒ ‚ d  S)Ni'  Úmust_createTzOUnable to create a new session key. It is likely that the cache is unavailable.)ÚrangeZ_get_new_session_keyr   Úsaver   ÚmodifiedÚRuntimeError)r   Úir   r   r   Úcreate$   s    	zSessionStore.createFc             C   sœ   |  j  d  k r |  j ƒ  S| r. |  j j } n0 |  j j |  j ƒ d  k	 rX |  j j } n t ‚ | |  j |  j d | ƒ |  j	 ƒ  ƒ } | r˜ | r˜ t
 ‚ d  S)NZno_load)r   r   r   Úaddr   r   Úsetr   Z_get_sessionZget_expiry_ager   )r   r   ÚfuncÚresultr   r   r   r   6   s    
	zSessionStore.savec             C   s    t  | ƒ o |  j | |  j k S)N)Úboolr   r   )r   r   r   r   r   ÚexistsE   s    zSessionStore.existsc             C   sC   | 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#   H   s
    	zSessionStore.deletec             C   s   d  S)Nr   )Úclsr   r   r   Úclear_expiredO   s    zSessionStore.clear_expired)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
KEY_PREFIXr   r
   Úpropertyr   r   r   r   r"   r#   Úclassmethodr%   r   r   )r   r   r   
   s   r   N)
Zdjango.confr   Z%django.contrib.sessions.backends.baser   r   r   Zdjango.core.cacher   r*   r   r   r   r   r   Ú<module>   s   