o
    ô<âgB  ã                   @   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__© úY/var/www/html/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
    