[Python-checkins] r77816 - tracker/instances/python-dev/extensions/openid_login.py
martin.v.loewis
python-checkins at python.org
Thu Jan 28 22:53:27 CET 2010
Author: martin.v.loewis
Date: Thu Jan 28 22:53:27 2010
New Revision: 77816
Log:
Fix session management to recycle all expired session objects.
Modified:
tracker/instances/python-dev/extensions/openid_login.py
Modified: tracker/instances/python-dev/extensions/openid_login.py
==============================================================================
--- tracker/instances/python-dev/extensions/openid_login.py (original)
+++ tracker/instances/python-dev/extensions/openid_login.py Thu Jan 28 22:53:27 2010
@@ -19,27 +19,24 @@
# Match may not have been exact
if self.db.openid_session.get(session_id, 'provider_id') != provider:
continue
- expires = self.db.openid_session.get(session_id, 'expires')
if discovered and discovered[1] != self.db.openid_session.get(session_id, 'url'):
# User has changed provider; don't reuse session
- break
- elif expires > date.Date('.')+date.Interval("1:00"):
+ continue
+ expires = self.db.openid_session.get(session_id, 'expires')
+ if expires > date.Date('.')+date.Interval("1:00"):
# valid for another hour
return self.db.openid_session.getnode(session_id)
- elif expires < date.Date('.')-date.Interval("1d"):
- # expired more than one day ago
- break
- else:
- session_id = None
- # need to create new session
+ # need to create new session, or recycle an expired one
if discovered:
stypes, url, op_local = discovered
else:
stypes, url, op_local = openid.discover(provider)
now = date.Date('.')
session_data = openid.associate(stypes, url)
- if session_id:
- session = self.db.openid_session.getnode(session_id)
+ # check whether a session has expired a day ago
+ sessions = self.db.openid_session.filter(None, {'expires':'to -1d'})
+ if sessions:
+ session = self.db.openid_session.getnode(sessions[0])
session.assoc_handle = session_data['assoc_handle']
else:
session_id = self.db.openid_session.create(assoc_handle=session_data['assoc_handle'])
More information about the Python-checkins
mailing list