From f29269869c09b9b60de037d989479b3a8c8efe1b Mon Sep 17 00:00:00 2001 From: "Christopher C. Wells" Date: Thu, 5 Aug 2021 06:34:08 -0700 Subject: [PATCH] Only add sessions refresh data to existing sessions Prior to change session were created for _every_ request (including API requests). --- babybuddy/middleware.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/babybuddy/middleware.py b/babybuddy/middleware.py index d374f0995..7e4f317cc 100644 --- a/babybuddy/middleware.py +++ b/babybuddy/middleware.py @@ -26,21 +26,22 @@ def __call__(self, request): class RollingSessionMiddleware: """ - Periodically resets the session expiry. + Periodically resets the session expiry for existing sessions. """ def __init__(self, get_response): self.get_response = get_response def __call__(self, request): - session_refresh = request.session.get('session_refresh') - if session_refresh: - try: - delta = int(time.time()) - session_refresh - except (ValueError, TypeError): - delta = settings.ROLLING_SESSION_REFRESH + 1 - if delta > settings.ROLLING_SESSION_REFRESH: + if request.session.keys(): + session_refresh = request.session.get('session_refresh') + if session_refresh: + try: + delta = int(time.time()) - session_refresh + except (ValueError, TypeError): + delta = settings.ROLLING_SESSION_REFRESH + 1 + if delta > settings.ROLLING_SESSION_REFRESH: + request.session['session_refresh'] = int(time.time()) + request.session.set_expiry(settings.SESSION_COOKIE_AGE) + else: request.session['session_refresh'] = int(time.time()) - request.session.set_expiry(settings.SESSION_COOKIE_AGE) - else: - request.session['session_refresh'] = int(time.time()) return self.get_response(request)