from datetime import datetime, timedelta from django.conf import settings class CookieJar(object): def __init__(self): self._set_cookies = [] self._delete_cookies = [] def set(self, cookie, value, permanent=False): if permanent: # 360 days max_age = 31104000 else: # 48 hours max_age = 172800 self._set_cookies.append({ 'name': cookie, 'value': value, 'max_age': max_age, }) def delete(self, cookie): self._delete_cookies.append(cookie) def flush(self, response): for cookie in self._set_cookies: response.set_cookie( settings.COOKIES_PREFIX + cookie['name'], cookie['value'], max_age=cookie['max_age'], path=settings.COOKIES_PATH, domain=settings.COOKIES_DOMAIN, secure=settings.COOKIES_SECURE ) for cookie in self._delete_cookies: response.delete_cookie( settings.COOKIES_PREFIX + cookie, path=settings.COOKIES_PATH, domain=settings.COOKIES_DOMAIN, )