
    h4                     r    S r SSKrSSKJr  SSKJr  SSKJr  Sr	\R                  " S5      r " S S	\5      rg)
z#
Cached, database-backed sessions.
    N)settings)SessionStore)cachesz!django.contrib.sessions.cached_dbzdjango.contrib.sessionsc                      ^  \ rS rSrSr\rSU 4S jjr\S 5       r	S r
S rS rU 4S jrU 4S	 jrSU 4S
 jjrSU 4S jjrSU 4S jjrSU 4S jjrS rS rSrU =r$ )r      z-
Implement cached, database backed sessions.
c                 \   > [         [        R                     U l        [        TU ]  U5        g N)r   r   SESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__s     \/var/www/html/env/lib/python3.13/site-packages/django/contrib/sessions/backends/cached_db.pyr   SessionStore.__init__   s"    X99:%    c                 <    U R                   U R                  5       -   $ r	   )cache_key_prefix_get_or_create_session_keyr   s    r   	cache_keySessionStore.cache_key   s    $$t'F'F'HHHr   c                 X   #    U R                   U R                  5       I S h  vN -   $  N7fr	   )r   _aget_or_create_session_keyr   s    r   
acache_keySessionStore.acache_key   s%     $$T-M-M-O'OOO'Os   *(*c                 b    U R                   R                  U R                  5      nUcs  U R	                  5       nU(       aZ  U R                  UR                  5      nU R                   R                  U R                  XR                  UR                  S95        U$ 0 nU$ ! [         a    S n Nf = fN)expiry)
r   getr   	Exception_get_session_from_dbdecodesession_datasetget_expiry_ageexpire_dater   datass      r   loadSessionStore.load"   s    	;;??4>>2D <))+A{{1>>2NND*=*=Q]]*=*S
    	 D	s   %B B.-B.c                   #     U R                   R                  U R                  5       I S h  vN 5      I S h  vN nUc  U R	                  5       I S h  vN nU(       aw  U R                  UR                  5      nU R                   R                  U R                  5       I S h  vN UU R                  UR                  S9I S h  vN 5      I S h  vN   U$ 0 nU$  N N! [         a    S n Nf = f N NO N0 N&7fr    )
r   agetr   r#   _aget_session_from_dbr%   r&   asetaget_expiry_ager)   r*   s      r   aloadSessionStore.aload5   s     	))0A*ABBD <0022A{{1>>2kk&&//++..amm.DD    # +BB 	 D	 3 ,Ds   C8(C CC CC C8C0AC8"C2# C8C4C8C6
C8C C C-*C8,C--C82C84C86C8c                 z   > U=(       a    U R                   U-   U R                  ;   =(       d    [        TU ]  U5      $ r	   )r   r   r   existsr   s     r   r7   SessionStore.existsJ   s9     E&&4D+w~k*	
r   c                    >#    U=(       a    U R                   U-   U R                  ;   =(       d    [        TU ]  U5      I S h  vN $  N7fr	   )r   r   r   aexistsr   s     r   r:   SessionStore.aexistsQ   sD      E&&4D2W_[11	
 2s   ?A	AA	c                   > [         TU ]  U5         U R                  R                  U R                  U R
                  U R                  5       5        g ! [         a#    [        R                  SU R                  5         g f = fNzError saving to cache (%s))
r   saver   r'   r   _sessionr(   r#   logger	exceptionr   must_creater   s     r   r>   SessionStore.saveX   s`    [!	HKKOODNNDMM4;N;N;PQ 	H94;;G	Hs   ?A *A?>A?c                 d  >#    [         TU ]  U5      I S h  vN    U R                  R                  U R	                  5       I S h  vN U R
                  U R                  5       I S h  vN 5      I S h  vN   g  Na N5 N N! [         a#    [        R                  SU R                  5         g f = f7fr=   )
r   asaver   r2   r   r?   r3   r#   r@   rA   rB   s     r   rF   SessionStore.asave_   s     gmK(((	H++""oo''**,,   	) (,
  	H94;;G	Hsh   B0A8B0(B  A:!B  &A<'B  2A>3B  7B0:B  <B  >B   *B-*B0,B--B0c                    > [         TU ]  U5        Uc  U R                  c  g U R                  nU R                  R                  U R                  U-   5        g r	   )r   deleter   r   r   r   s     r   rI   SessionStore.deletej   sL    {#'**K400;>?r   c                    >#    [         TU ]  U5      I S h  vN   Uc  U R                  c  g U R                  nU R                  R                  U R                  U-   5      I S h  vN   g  NR N7fr	   )r   adeleter   r   r   r   s     r   rL   SessionStore.adeleter   sf     gok***'**Kkk!!$"7"7+"EFFF 	+
 	Gs"   A-A)AA-#A+$A-+A-c                 h    U R                  5         U R                  U R                  5        SU l        g)zK
Remove the current session data from the database and regenerate the
key.
N)clearrI   r   _session_keyr   s    r   flushSessionStore.flushz   s'    
 	

D$$% r   c                    #    U R                  5         U R                  U R                  5      I Sh  vN   SU l        g N7f)zSee flush().N)rO   rL   r   rP   r   s    r   aflushSessionStore.aflush   s3     

ll4++,,,  	-s   /A >A )r   rP   r	   )F)__name__
__module____qualname____firstlineno____doc__
KEY_PREFIXr   r   propertyr   r   r-   r4   r7   r:   r>   rF   rI   rL   rQ   rT   __static_attributes____classcell__)r   s   @r   r   r      sl     "& I IP&*

H	H@G!! !r   r   )rZ   loggingdjango.confr   #django.contrib.sessions.backends.dbr   DBStoredjango.core.cacher   r[   	getLoggerr@    r   r   <module>rf      s<       G $0
			4	5w!7 w!r   