î
ªÍ XÎ
  ã               @   sl   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
 Gd d „  d e ƒ Z d S)	é    )Úsettings)ÚCreateErrorÚSessionBaseÚUpdateError)Úcaches)Úrangez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 t |  ƒ j | ƒ d  S)N)r   r   ZSESSION_CACHE_ALIASÚ_cacheÚsuperr   Ú__init__)ÚselfÚsession_key)Ú	__class__© úT/home/ubuntu/projects/ifolica/build/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.)r   Z_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
 ‚ n  d  S)NZ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   sF   | d  k r+ |  j  d  k r d  S|  j  } n  |  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)Ú__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   Zdjango.utils.six.movesr   r)   r   r   r   r   r   Ú<module>   s
   