o
    `Zh
                     @   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                       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 | d S N)r   r   ZSESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__ ]/var/www/html/lang_env/lib/python3.10/site-packages/django/contrib/sessions/backends/cache.pyr      s   zSessionStore.__init__c                 C   s   | j |   S r   )cache_key_prefixZ_get_or_create_session_key)r   r   r   r   	cache_key   s   zSessionStore.cache_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   Zsession_datar   r   r   load   s   zSessionStore.loadc              	   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.)rangeZ_get_new_session_keyr   saver   modifiedRuntimeError)r   ir   r   r   create#   s   
zSessionStore.createFc                 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)Z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v S r   )boolr   r	   r   r   r   r   existsG   s   zSessionStore.existsc                 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&   L   s
   
zSessionStore.deletec                 C   s   d S r   r   )clsr   r   r   clear_expiredS   s   zSessionStore.clear_expiredr   )F)__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   r-   r   r   r   r   r   <module>   s
    