
    īi                     v    d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ  G d	 d
e      Zy)    N)import_module)settings)UpdateError)SessionInterrupted)patch_vary_headers)MiddlewareMixin)	http_datec                   *     e Zd Z fdZd Zd Z xZS )SessionMiddlewarec                 x    t         |   |       t        t        j                        }|j
                  | _        y N)super__init__r   r   SESSION_ENGINESessionStore)selfget_responseengine	__class__s      `/var/www/djangotutorial2/venv/lib/python3.12/site-packages/django/contrib/sessions/middleware.pyr   zSessionMiddleware.__init__   s.    &x667"//    c                     |j                   j                  t        j                        }| j	                  |      |_        y r   )COOKIESgetr   SESSION_COOKIE_NAMEr   session)r   requestsession_keys      r   process_requestz!SessionMiddleware.process_request   s.    oo))(*F*FG++K8r   c                 2   	 |j                   j                  }|j                   j                  }|j                   j                         }t
        j                  |j                  v rS|rQ|j                  t
        j                  t
        j                  t
        j                  t
        j                         d}n)|}|st
        j                  r|s|j                   j                         rd}d}n<|j                   j                         }t        j                         |z   }	t!        |	      }|j"                  dk  r	 |j                   j%                          |j+                  t
        j                  |j                   j,                  ||t
        j                  t
        j                  t
        j.                  xs dt
        j0                  xs dt
        j                  	       d}|rt3        |d       |S # t        $ r |cY S w xY w# t&        $ r t)        d      w xY w)z
        If request.session was modified, or if the configuration is to save the
        session every time, save the changes and set a session cookie or delete
        the session cookie if the session has been emptied.
        )pathdomainsamesiteTNi  zThe request's session was deleted before the request completed. The user may have logged out in a concurrent request, for example.)max_ageexpiresr"   r!   securehttponlyr#   )Cookie)r   accessedmodifiedis_emptyAttributeErrorr   r   r   delete_cookieSESSION_COOKIE_PATHSESSION_COOKIE_DOMAINSESSION_COOKIE_SAMESITESESSION_SAVE_EVERY_REQUESTget_expire_at_browser_closeget_expiry_agetimer	   status_codesaver   r   
set_cookier   SESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLYr   )
r   r   responser)   r*   emptyneed_vary_cookier$   r%   expires_times
             r   process_responsez"SessionMiddleware.process_response   s   	//H//HOO,,.E
 ''7??:u"",,1155!99	 #   $  (H????>>@"G"G%oo<<>G#'99;#8L'5G ''#-,,. '' 4433 ' ''==%99'==E!)!A!A!IT!)!A!A ( 
 (,$x5e  	O	: ' 0H s   AG0 :H 0G>=G>H)__name__
__module____qualname__r   r   r>   __classcell__)r   s   @r   r   r      s    0
9<r   r   )r4   	importlibr   django.confr   %django.contrib.sessions.backends.baser   "django.contrib.sessions.exceptionsr   django.utils.cacher   django.utils.deprecationr   django.utils.httpr	   r    r   r   <module>rK      s+     #   = A 1 4 'F Fr   