cookiejar.py 1.5 KB

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