From 6f9013bdad2b4b896db8c36773bd1d74c9a91df0 Mon Sep 17 00:00:00 2001 From: Patrick Tombez Date: Fri, 13 Dec 2019 14:10:46 +0100 Subject: [PATCH] Fix session expiration ignored --- session_redis/session.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/session_redis/session.py b/session_redis/session.py index 701a300..107820b 100644 --- a/session_redis/session.py +++ b/session_redis/session.py @@ -38,14 +38,20 @@ class RedisSessionStore(SessionStore): def save(self, session): key = self.build_key(session.sid) + # `session` is the Werkzeug wrapper that contains + # the "real" session object `OpenERPSession`. + # That's why we need to look for the first item in it to get the + # expiration parameter + session_oe = session.itervalues().next() + expiration = getattr(session_oe, 'expiration', self.expiration) if _logger.isEnabledFor(logging.DEBUG): _logger.debug("saving session with key '%s' and " "expiration of %s seconds", - key, self.expiration) + key, expiration) if self.redis.set(key, dumps(dict(session), HIGHEST_PROTOCOL)): - return self.redis.expire(key, self.expiration) + return self.redis.expire(key, expiration) def delete(self, session): key = self.build_key(session.sid)