B
    §0H[_  ã               @   sp   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
„ d
eƒZdS )é    N)Úimport_module)Úsettings)ÚUpdateError)ÚSuspiciousOperation)Úpatch_vary_headers)ÚMiddlewareMixin)Úcookie_datec               @   s&   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   úfC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\sessions\middleware.pyÚ__init__   s    
zSessionMiddleware.__init__c             C   s   |j  t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  ¡ }W n tk
r2   Y nèX tj|jkr\|r\|jtjtj	tj
d� n¾|rjt|dƒ |svtj�r|�s|j  ¡ r�d}d}n|j  ¡ }t ¡ | }t|ƒ}|jdk�ry|j  ¡  W n tk
rä   tdƒ‚Y nX |jtj|j j||tj
tj	tj�p
dtj�pdd� |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Úexpiresr   r   ÚsecureÚhttponly)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_HTTPONLY)	r   r   Úresponser   r   Úemptyr   r   Zexpires_timer   r   r   Úprocess_response   sD    



z"SessionMiddleware.process_response)N)Ú__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   