Files
tripwithbonus/AuthApp/middleware.py
SDE e77b18072c 0.2.4
chat v2
2023-08-09 16:52:39 +03:00

57 lines
1.8 KiB
Python

import json
import datetime
from django.http import HttpResponse
from django.conf import settings
def set_cookie(response, key, value, days_expire=7):
if days_expire is None:
max_age = 365 * 24 * 60 * 60 # one year
else:
max_age = days_expire * 24 * 60 * 60
expires = datetime.datetime.strftime(
datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age),
"%a, %d-%b-%Y %H:%M:%S GMT",
)
response.set_cookie(
key,
value,
max_age=max_age,
expires=expires,
domain=settings.SESSION_COOKIE_DOMAIN,
secure=settings.SESSION_COOKIE_SECURE or None,
)
return response
class ResponseInterceptionMiddleware:
# def __init__(self, get_response):
# self.get_response = get_response
#
# def __call__(self, request):
# return self.get_response(request)
# def process_request(self, request):
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if request.user.is_authenticated:
request = request.user.user_profile.save_user_alerts_to_session(request)
response = self.get_response(request)
if request.user.is_authenticated:
for_save_to_session = request.user.user_profile.pop_node_by_name('for_save_to_session')
if for_save_to_session:
for key, val in for_save_to_session.items():
set_cookie(response, key, json.dumps(val), 30)
# Code to be executed for each request/response after
# the view is called.
return response