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