o 3a @spddlZddlmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZGd d d e ZdS) N) import_module)settings) UpdateError)SessionInterrupted)patch_vary_headers)MiddlewareMixin) http_datecs.eZdZdfdd ZddZddZZS) SessionMiddlewareNcs"t|ttj}|j|_dSN)super__init__rrSESSION_ENGINE SessionStore)self get_responseengine __class__D/usr/lib/python3/dist-packages/django/contrib/sessions/middleware.pyr s   zSessionMiddleware.__init__cCs|jtj}|||_dSr )COOKIESgetrSESSION_COOKIE_NAMErsession)rrequest session_keyrrrprocess_requestsz!SessionMiddleware.process_requestc Cs$z|jj}|jj}|j}Wn ty|YSwtj|jvr7|r7|jtjtj tj tj dt |d|S|r>t |d|sCtj r|s|jrOd}d}n|j}t|}t|}|jdkrz|jWn tyutdw|jtj|jj||tj tj tjpdtjpdtj 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. )pathdomainsamesite)CookieNizThe request's session was deleted before the request completed. The user may have logged out in a concurrent request, for example.)max_ageexpiresrrsecurehttponlyr)raccessedmodifiedis_emptyAttributeErrorrrr delete_cookieSESSION_COOKIE_PATHSESSION_COOKIE_DOMAINSESSION_COOKIE_SAMESITErSESSION_SAVE_EVERY_REQUESTget_expire_at_browser_closeget_expiry_agetimer status_codesaverr set_cookierSESSION_COOKIE_SECURESESSION_COOKIE_HTTPONLY) rrresponser%r&emptyr!r" expires_timerrrprocess_responsesV          z"SessionMiddleware.process_responser )__name__ __module__ __qualname__r rr9 __classcell__rrrrr sr )r0 importlibr django.confr%django.contrib.sessions.backends.baser"django.contrib.sessions.exceptionsrdjango.utils.cacherdjango.utils.deprecationrdjango.utils.httprr rrrrs