o
    `Zh2                     @   s@   d Z ddlmZ ddlmZ ddlmZ dZG dd deZdS )	z#
Cached, database-backed sessions.
    )settings)SessionStore)cachesz!django.contrib.sessions.cached_dbc                       sj   e Zd ZdZeZd fdd	Zedd Zdd Z	 fd	d
Z
d fdd	Zd fdd	Zdd Z  ZS )r   z5
    Implement cached, database backed sessions.
    Nc                    s   t tj | _t | d S N)r   r   ZSESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__ a/var/www/html/lang_env/lib/python3.10/site-packages/django/contrib/sessions/backends/cached_db.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   sr   z	| j | j}W n ty   d }Y nw |d u r7|  }|r5| |j}| j | j|| j|j	d |S i }|S )N)Zexpiry)
r   getr   	ExceptionZ_get_session_from_dbdecodeZsession_datasetget_expiry_ageZexpire_date)r
   datasr   r   r   load   s   zSessionStore.loadc                    s    |r
| j | | jv pt |S r   )r   r   r   existsr	   r   r   r   r   .   s
   
zSessionStore.existsFc                    s(   t  | | j| j| j|   d S r   )r   saver   r   r   _sessionr   )r
   Zmust_creater   r   r   r   5   s   zSessionStore.savec                    s>   t  | |d u r| jd u rd S | j}| j| j|  d S r   )r   deleter   r   r   r	   r   r   r   r   9   s   
zSessionStore.deletec                 C   s   |    | | j d| _dS )zc
        Remove the current session data from the database and regenerate the
        key.
        N)clearr   r   Z_session_keyr   r   r   r   flushA   s   
zSessionStore.flushr   )F)__name__
__module____qualname____doc__
KEY_PREFIXr   r   propertyr   r   r   r   r   r    __classcell__r   r   r   r   r      s    
r   N)	r$   Zdjango.confr   Z#django.contrib.sessions.backends.dbr   ZDBStoreZdjango.core.cacher   r%   r   r   r   r   <module>   s    