o
    "7hB                     @   sD   d dl mZ d dlmZmZmZ d dlmZ dZG d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 Zdd Zdd Zd#ddZd#ddZdd Zdd Zd"ddZd"ddZedd Zed d! Z  ZS )$SessionStorez&
    A cache-based session store.
    Nc                    s   t tj | _t | d S N)r   r   SESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__ {/var/www/epreuve.sigeris.cm/public_html/epreuve/venv/lib/python3.10/site-packages/django/contrib/sessions/backends/cache.pyr      s   zSessionStore.__init__c                 C   s   | j |   S r   )cache_key_prefix_get_or_create_session_keyr   r   r   r   	cache_key   s   zSessionStore.cache_keyc                    s   | j |  I d H  S r   )r   _aget_or_create_session_keyr   r   r   r   
acache_key   s   zSessionStore.acache_keyc                 C   s@   z	| j | j}W n ty   d }Y nw |d ur|S d | _i S r   )r
   getr   	Exception_session_keyr   session_datar   r   r   load   s   zSessionStore.loadc                    sP   z| j |  I d H I d H }W n ty   d }Y nw |d ur#|S d | _i S r   )r
   agetr   r   r   r   r   r   r   aload&   s    zSessionStore.aloadc              	   C   sN   t dD ]}|  | _z| jdd W n	 ty   Y qw d| _ d S tdNi'  T)must_createzOUnable to create a new session key. It is likely that the cache is unavailable.)range_get_new_session_keyr   saver   modifiedRuntimeErrorr   ir   r   r   create0   s   
zSessionStore.createc              	      s\   t dD ]$}|  I d H | _z| jddI d H  W n	 ty#   Y qw d| _ d S tdr"   )r$   _aget_new_session_keyr   asaver   r'   r(   r)   r   r   r   acreateC   s   zSessionStore.acreateFc                 C   sn   | j d u r	|  S |r| jj}n| j| jd ur| jj}nt|| j| j|d| 	 }|r3|s5t
d S d S N)no_load)r   r+   r
   addr   r   setr   _get_sessionget_expiry_ager   r   r#   funcresultr   r   r   r&   Q   s   



zSessionStore.savec                    s   | j d u r|  I d H S |r| jj}n| j|  I d H I d H d ur)| jj}nt||  I d H | j|dI d H | 	 I d H I d H }|rK|sMt
d S d S r/   )r   r.   r
   aaddr    r   asetr   _aget_sessionaget_expiry_ager   r5   r   r   r   r-   b   s    

 

zSessionStore.asavec                 C   s   t |o| j| | jv S r   )boolr   r
   r   r   r   r   existss   s   zSessionStore.existsc                    s"   t |o| j| j| I d H S r   )r<   r
   ahas_keyr   r   r   r   r   aexistsx   s   
zSessionStore.aexistsc                 C   s2   |d u r| j d u rd S | j }| j| j|  d S r   )r   r
   deleter   r   r   r   r   r@   }   s
   
zSessionStore.deletec                    s:   |d u r| j d u rd S | j }| j| j| I d H  d S r   )r   r
   adeleter   r   r   r   r   rA      s   
zSessionStore.adeletec                 C   s   d S r   r   clsr   r   r   clear_expired   s   zSessionStore.clear_expiredc                    s   d S r   r   rB   r   r   r   aclear_expired   s   zSessionStore.aclear_expiredr   )F)__name__
__module____qualname____doc__
KEY_PREFIXr   r   propertyr   r   r   r!   r+   r.   r&   r-   r=   r?   r@   rA   classmethodrD   rE   __classcell__r   r   r   r   r      s*    






r   N)
django.confr   %django.contrib.sessions.backends.baser   r   r   django.core.cacher   rJ   r   r   r   r   r   <module>   s
    