
vÅÏ^:  ã               @   s–   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 Gd	 d
 „  d
 e ƒ Z d S)é    N)Úimport_module)Úsettings)ÚUpdateError)ÚSuspiciousOperation)Úpatch_vary_headers)ÚMiddlewareMixin)Ú	http_datec               @   s7   e  Z d  Z d d d „ Z d d „  Z d d „  Z d S)ÚSessionMiddlewareNc             C   s(   | |  _  t t j ƒ } | j |  _ d  S)N)Úget_responser   r   ZSESSION_ENGINEÚSessionStore)Úselfr
   Zengine© r   úD/tmp/pip-build-8lau8j11/django/django/contrib/sessions/middleware.pyÚ__init__   s    	zSessionMiddleware.__init__c             C   s+   | j  j t j ƒ } |  j | ƒ | _ d  S)N)ÚCOOKIESÚgetr   ÚSESSION_COOKIE_NAMEr   Úsession)r   ÚrequestÚsession_keyr   r   r   Úprocess_request   s    z!SessionMiddleware.process_requestc       	   !   C   s£  y+ | j  j } | j  j } | j  j ƒ  } Wn t k
 rC | SYn Xt j | j k rŽ | rŽ | j t j d t j	 d t j
 ƒt | d ƒ n| r¡ t | d ƒ | s° t j rŸ| rŸ| j  j ƒ  rÕ d } d } n+ | j  j ƒ  } t j ƒ  | } t | ƒ } | j d k rŸy | j  j ƒ  Wn t k
 r@t d ƒ ‚ Yn X| j t j | j  j d | d | d t j
 d t j	 d	 t j pƒd d
 t j p’d d t j ƒ| S)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ÚCookieNiô  z‚The request's session was deleted before the request completed. The user may have logged out in a concurrent request, for example.Úmax_ageÚexpiresÚsecureÚhttponlyZsamesite)úCookie)r   )r   ÚaccessedÚmodifiedZis_emptyÚAttributeErrorr   r   r   Zdelete_cookieZSESSION_COOKIE_PATHZSESSION_COOKIE_DOMAINr   ZSESSION_SAVE_EVERY_REQUESTZget_expire_at_browser_closeZget_expiry_ageÚtimer   Ústatus_codeÚsaver   r   Ú
set_cookier   ZSESSION_COOKIE_SECUREZSESSION_COOKIE_HTTPONLYZSESSION_COOKIE_SAMESITE)	r   r   Úresponser   r    Úemptyr   r   Zexpires_timer   r   r   Úprocess_response   sH    			
		
z"SessionMiddleware.process_response)Ú__name__Ú
__module__Ú__qualname__r   r   r(   r   r   r   r   r	      s   r	   )r"   Ú	importlibr   Zdjango.confr   Z%django.contrib.sessions.backends.baser   Zdjango.core.exceptionsr   Zdjango.utils.cacher   Zdjango.utils.deprecationr   Zdjango.utils.httpr   r	   r   r   r   r   Ú<module>   s   