From 1ab6e8cd0031813aa2b70847d6b54f294d8f90f5 Mon Sep 17 00:00:00 2001 From: Giao Le Date: Mon, 11 Jul 2016 16:20:13 -0400 Subject: [PATCH 1/1] session-filebase-backend-fix --- Django-1.8.7 | 1 + django/contrib/sessions/backends/file.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 120000 Django-1.8.7 diff --git a/Django-1.8.7 b/Django-1.8.7 new file mode 120000 index 0000000..2fa6e7c --- /dev/null +++ b/Django-1.8.7 @@ -0,0 +1 @@ +Django-1.8.7 \ No newline at end of file diff --git a/django/contrib/sessions/backends/file.py b/django/contrib/sessions/backends/file.py index 41469c4..2b10b3e 100644 --- a/django/contrib/sessions/backends/file.py +++ b/django/contrib/sessions/backends/file.py @@ -71,6 +71,17 @@ class SessionStore(SessionBase): modification = datetime.datetime.fromtimestamp(modification) return modification + def _expiry_date(self, session_data): + """ + Return the expiry time of the file storing the session's content. + """ + expiry = session_data.get('_session_expiry') + if not expiry: + expiry = self._last_modification() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE) + elif not isinstance(expiry, datetime.datetime): + expiry = self._last_modification() + datetime.timedelta(seconds=expiry) + return expiry + def load(self): session_data = {} try: @@ -89,9 +100,7 @@ class SessionStore(SessionBase): self.create() # Remove expired sessions. - expiry_age = self.get_expiry_age( - modification=self._last_modification(), - expiry=session_data.get('_session_expiry')) + expiry_age = self.get_expiry_age(expiry=self._expiry_date(session_data)) if expiry_age < 0: session_data = {} self.delete() -- 1.9.1