Filter room ids before hitting the database

This commit is contained in:
Erik Johnston 2015-10-21 10:09:26 +01:00
parent c8baada94a
commit 5c41224a89
2 changed files with 21 additions and 1 deletions

View File

@ -202,6 +202,26 @@ class Filter(object):
return True return True
def filter_rooms(self, room_ids):
"""Apply the 'rooms' filter to a given list of rooms.
Args:
room_ids (list): A list of room_ids.
Returns:
list: A list of room_ids that match the filter
"""
room_ids = set(room_ids)
disallowed_rooms = set(self.filter_json.get("not_rooms", []))
room_ids -= disallowed_rooms
allowed_rooms = self.filter_json.get("rooms", None)
if allowed_rooms is not None:
room_ids &= set(allowed_rooms)
return room_ids
def filter(self, events): def filter(self, events):
return filter(self.check, events) return filter(self.check, events)

View File

@ -64,7 +64,7 @@ class SearchHandler(BaseHandler):
) )
room_ids = set(r.room_id for r in rooms) room_ids = set(r.room_id for r in rooms)
# TODO: Apply room filter to rooms list room_ids = filtr.filter_rooms(room_ids)
rank_map, event_map = yield self.store.search_msgs(room_ids, search_term, keys) rank_map, event_map = yield self.store.search_msgs(room_ids, search_term, keys)