Implement cleanup for sessions
[cascardo/ipsilon.git] / ipsilon / util / sessions.py
index 86113a1..5a9854b 100644 (file)
@@ -4,6 +4,7 @@ import base64
 from cherrypy.lib.sessions import Session
 from ipsilon.util.data import Store, SqlQuery
 import threading
+import datetime
 try:
     import cPickle as pickle
 except ImportError:
@@ -36,6 +37,14 @@ class SessionStore(Store):
         else:
             raise NotImplementedError()
 
+    def _cleanup(self):
+        # pylint: disable=protected-access
+        table = SqlQuery(self._db, 'sessions', SESSION_TABLE)._table
+        # pylint: disable=no-value-for-parameter
+        d = table.delete().where(table.c.expiration_time
+                                 <= datetime.datetime.now())
+        return d.execute().rowcount
+
 
 class SqlSession(Session):