cookie_jar.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from datetime import datetime, timedelta
  2. from django.conf import settings
  3. class CookieJar(object):
  4. _set_cookies = []
  5. _delete_cookies = []
  6. def set(self, cookie, value, permanent=False):
  7. if permanent:
  8. # 360 days
  9. max_age = 31104000
  10. else:
  11. # 48 hours
  12. max_age = 172800
  13. self._set_cookies.append({
  14. 'name': cookie,
  15. 'value': value,
  16. 'max_age': max_age,
  17. })
  18. def delete(self, cookie):
  19. self._delete_cookies.append(cookie)
  20. def flush(self, response):
  21. for cookie in self._set_cookies:
  22. response.set_cookie(
  23. settings.COOKIES_PREFIX + cookie['name'],
  24. cookie['value'],
  25. max_age=cookie['max_age'],
  26. path=settings.COOKIES_PATH,
  27. domain=settings.COOKIES_DOMAIN,
  28. secure=settings.COOKIES_SECURE
  29. )
  30. for cookie in self._delete_cookies:
  31. response.delete_cookie(
  32. settings.COOKIES_PREFIX + cookie,
  33. path=settings.COOKIES_PATH,
  34. domain=settings.COOKIES_DOMAIN,
  35. )