
    Evg4                     v    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dS )
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.
    Nc                     t           t          j                 | _        t	                                          |           d S N)r   r   SESSION_CACHE_ALIAS_cachesuper__init__selfsession_key	__class__s     g/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/sessions/backends/cached_db.pyr   zSessionStore.__init__   s0    X9:%%%%%    c                 :    | 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HHr   c                 J   K   | j         |                                  d {V z   S r   )r   _aget_or_create_session_keyr   s    r   
acache_keyzSessionStore.acache_key   s2      $T-M-M-O-O'O'O'O'O'O'OOOr   c                 J   	 | j                             | j                  }n# t          $ r d }Y nw xY w|m|                                 }|rU|                     |j                  }| j                             | j        ||                     |j	                             ni }|S 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>22DD 	 	 	 DDD	
 <))++A {{1>22ND$*=*=Q]*=*S*S    s   " 11c                   K   	 | j                             |                                  d {V            d {V }n# t          $ r d }Y nw xY w||                                  d {V }|rt|                     |j                  }| j                             |                                  d {V ||                     |j	                   d {V            d {V  ni }|S r   )
r
   agetr   r   _aget_session_from_dbr!   r"   asetaget_expiry_ager%   r&   s      r   aloadzSessionStore.aload5   sN     	))0A0A*A*A*A*A*A*ABBBBBBBBDD 	 	 	 DDD	
 <0022222222A {{1>22k&&//++++++++..am.DDDDDDDD          s   8= AAc                 l    |r| j         |z   | j        v p t                                          |          S r   )r   r
   r   existsr   s     r   r1   zSessionStore.existsJ   s;     E&4D+ww~~k**	
r   c                 |   K   |r| j         |z   | j        v p&t                                          |           d {V S r   )r   r
   r   aexistsr   s     r   r3   zSessionStore.aexistsQ   sQ       E&4D2WW__[11111111	
r   Fc                    t                                          |           	 | j                            | j        | j        |                                            d S # t          $ r$ t          	                    d| j                   Y d S 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KOODNDM4;N;N;P;PQQQQQ 	H 	H 	H94;GGGGGG	Hs   8A *BBc                 l  K   t                                          |           d {V  	 | j                            |                                  d {V | j        |                                  d {V            d {V  d S # t          $ r$ t          	                    d| j                   Y d S w xY wr5   )
r   asaver
   r-   r   r7   r.   r   r8   r9   r:   s     r   r=   zSessionStore.asave_   s      ggmmK(((((((((	H+""oo''''''''**,,,,,,,,          
  	H 	H 	H94;GGGGGG	Hs   AB *B32B3c                     t                                          |           || j        d S | j        }| j                            | j        |z              d S r   )r   deleter   r
   r   r   s     r   r?   zSessionStore.deletej   sY    {###'*K40;>?????r   c                    K   t                                          |           d {V  || j        d S | j        }| j                            | j        |z              d {V  d S r   )r   adeleter   r
   r   r   s     r   rA   zSessionStore.adeleter   s      ggook*********'*Kk!!$"7+"EFFFFFFFFFFFr   c                 p    |                                   |                     | j                   d| _        dS )zc
        Remove the current session data from the database and regenerate the
        key.
        N)clearr?   r   _session_keyr   s    r   flushzSessionStore.flushz   s4    
 	

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

ll4+,,,,,,,,, r   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      s}         "& & & & & & I I XIP P P  &  *
 
 
 
 

 
 
 
 
H H H H H H	H 	H 	H 	H 	H 	H@ @ @ @ @ @G G G G G G! ! !! ! ! ! ! ! !r   r   )rK   loggingdjango.confr   #django.contrib.sessions.backends.dbr   DBStoredjango.core.cacher   rL   	getLoggerr8    r   r   <module>rV      s                  G G G G G G $ $ $ $ $ $0
		4	5	5w! w! w! w! w!7 w! w! w! w! w!r   