def __getitem__(self, sessionid): with connection.start_request() as request: s = self.collection.find_one({_id: sessionid}) if not s: raise KeyError(sessionid) self.collection.update({_id: sessionid}, {'$set': {_atime: time()}}, safe=True) return self.decode(s[_data])
def cleanup(self, timeout): ''' Removes all sessions older than ``timeout`` seconds. Called automatically on every session access. ''' cutoff = time() - timeout with connection.start_request() as request: self.collection.remove({_atime: {'$lt': cutoff}})
def find(self, query): with connection.start_request() as request: return self.collection.find(query)
def remove(self, db_object): with connection.start_request() as request: self.collection.remove(db_object)
def __delitem__(self, sessionid): with connection.start_request() as request: self.collection.remove({_id: sessionid}, safe=True)
def __setitem__(self, sessionid, sessiondict): data = self.encode(sessiondict) with connection.start_request() as request: self.collection.save({_id: sessionid, _data: data, _atime: time()}, safe=True)
def __contains__(self, sessionid): with connection.start_request() as request: return bool(self.collection.find_one({_id: sessionid}))
def register(**kwargs): with connection.start_request() as request: user = collection.save(kwargs) return user
def authenticate(username, password): with connection.start_request() as request: user = collection.find_one({'username':username, 'password':pswd(password)}) return user if user else None