cookie_jar.py 1.5 KB

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