From 48f4c7099f0206deebd2fc561670ae04e9f8b385 Mon Sep 17 00:00:00 2001 From: Michael van Tellingen Date: Mon, 4 Sep 2017 11:07:37 +0200 Subject: [PATCH] Only check session timeout if the session is not empty --- src/django_session_timeout/middleware.py | 2 +- tests/test_middleware.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/django_session_timeout/middleware.py b/src/django_session_timeout/middleware.py index d2eac65..6d3ece9 100644 --- a/src/django_session_timeout/middleware.py +++ b/src/django_session_timeout/middleware.py @@ -14,7 +14,7 @@ class SessionTimeoutMiddleware(MiddlewareMixin): def process_request(self, request): - if not hasattr(request, 'session'): + if not hasattr(request, 'session') or request.session.is_empty(): return init_time = request.session.setdefault(SESSION_TIMEOUT_KEY, time.time()) diff --git a/tests/test_middleware.py b/tests/test_middleware.py index b952da7..7a6d704 100644 --- a/tests/test_middleware.py +++ b/tests/test_middleware.py @@ -11,6 +11,8 @@ def r(rf): req = rf.get('/') middleware = SessionMiddleware() middleware.process_request(req) + req.session['example_key'] = '1' + req.session.save() yield req @@ -21,6 +23,14 @@ def test_session_new(r): assert r.session[SESSION_TIMEOUT_KEY] +def test_session_new_empty_session(r): + r.session.flush() + + middleware = SessionTimeoutMiddleware() + assert middleware.process_request(r) is None + assert SESSION_TIMEOUT_KEY not in r.session + + def test_session_expire(r, settings): settings.SESSION_EXPIRE_SECONDS = 3600 middleware = SessionTimeoutMiddleware()