
    g4                     r    d Z ddlZddlmZ ddlmZ ddlmZ dZ	 ej                  d      Z G d d	e      Zy)
z#
Cached, database-backed sessions.
    N)settings)SessionStore)cachesz!django.contrib.sessions.cached_dbzdjango.contrib.sessionsc                        e Zd ZdZeZd fd	Zed        Zd Z	d Z
d Z fdZ fdZd fd		Zd fd
	Zd fd	Zd fd	Zd Zd Z xZS )r   z5
    Implement cached, database backed sessions.
    c                 \    t         t        j                     | _        t        |   |       y N)r   r   SESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__s     /var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/cached_db.pyr   zSessionStore.__init__   s"    X99:%    c                 <    | j                   | j                         z   S r   )cache_key_prefix_get_or_create_session_keyr   s    r   	cache_keyzSessionStore.cache_key   s    $$t'F'F'HHHr   c                 X   K   | j                   | j                          d {   z   S 7 wr   )r   _aget_or_create_session_keyr   s    r   
acache_keyzSessionStore.acache_key   s&     $$T-M-M-O'OOO'Os   *(*c                 \   	 | j                   j                  | j                        }|r| j	                         }|r^| j                  |j                        }| j                   j                  | j                  || j                  |j                               |S i }|S # t        $ r d }Y w xY wN)expiry)
r
   getr   	Exception_get_session_from_dbdecodesession_datasetget_expiry_ageexpire_dater   datass      r   loadzSessionStore.load"   s    	;;??4>>2D <))+A{{1>>2NND$*=*=Q]]*=*S
    	 D	s   %B B+*B+c                   K   	 | j                   j                  | j                          d {          d {   }|| j	                          d {   }|rz| j                  |j                        }| j                   j                  | j                          d {   || j                  |j                         d {          d {    |S i }|S 7 7 # t        $ r d }Y w xY w7 7 Q7 /7 %wr   )
r
   agetr   r   _aget_session_from_dbr!   r"   asetaget_expiry_ager%   r&   s      r   aloadzSessionStore.aload5   s     	))0A*ABBD <0022A{{1>>2kk&&//++..amm.DD    # +BB 	 D	 3 ,Ds   C4(C CC CC C4C,A	C4C.#C4 C0C4C2
C4C C C)&C4(C))C4.C40C42C4c                 d    |xr | j                   |z   | j                  v xs t        |   |      S r   )r   r
   r   existsr   s     r   r1   zSessionStore.existsJ   s9     E&&4D+w~k*	
r   c                    K   |xr | j                   |z   | j                  v xs t        |   |       d {   S 7 wr   )r   r
   r   aexistsr   s     r   r3   zSessionStore.aexistsQ   sE      E&&4D2W_[11	
 2s   4><>c                    t         |   |       	 | j                  j                  | j                  | j
                  | j                                y # t        $ r# t        j                  d| j                         Y y w xY wNzError saving to cache (%s))
r   saver
   r#   r   _sessionr$   r   logger	exceptionr   must_creater   s     r   r6   zSessionStore.saveX   s`    [!	HKKOODNNDMM4;N;N;PQ 	H94;;G	Hs   ?A )A>=A>c                 b  K   t         |   |       d {    	 | j                  j                  | j	                          d {   | j
                  | j                          d {          d {    y 7 a7 57 7 # t        $ r# t        j                  d| j                         Y y w xY wwr5   )
r   asaver
   r-   r   r7   r.   r   r8   r9   r:   s     r   r=   zSessionStore.asave_   s     gmK(((	H++""oo''**,,   	) (,
  	H94;;G	Hsh   B/A8B/(B  A:!B  &A<'B  2A>3B  7B/:B  <B  >B   )B,)B/+B,,B/c                     t         |   |       || j                  y | j                  }| j                  j                  | j                  |z          y r   )r   deleter   r
   r   r   s     r   r?   zSessionStore.deletej   sL    {#'**K400;>?r   c                    K   t         |   |       d {    || j                  y | j                  }| j                  j                  | j                  |z          d {    y 7 P7 wr   )r   adeleter   r
   r   r   s     r   rA   zSessionStore.adeleter   sh     gok***'**Kkk!!$"7"7+"EFFF 	+
 	Gs"   A+A'A
A+!A)"A+)A+c                 h    | j                          | j                  | j                         d| _        y)zc
        Remove the current session data from the database and regenerate the
        key.
        N)clearr?   r   _session_keyr   s    r   flushzSessionStore.flushz   s'    
 	

D$$% r   c                    K   | j                          | j                  | j                         d{    d| _        y7 w)zSee flush().N)rC   rA   r   rD   r   s    r   aflushzSessionStore.aflush   s4     

ll4++,,,  	-s   /A >A r   )F)__name__
__module____qualname____doc__
KEY_PREFIXr   r   propertyr   r   r)   r/   r1   r3   r6   r=   r?   rA   rE   rG   __classcell__)r   s   @r   r   r      sg     "& I IP&*

H	H@G!!r   r   )rK   loggingdjango.confr   #django.contrib.sessions.backends.dbr   DBStoredjango.core.cacher   rL   	getLoggerr8    r   r   <module>rV      s>       G $0
			4	5w!7 w!r   