Filter room ids before hitting the database

pull/4/merge
Erik Johnston 9 years ago
parent c8baada94a
commit 5c41224a89
  1. 20
      synapse/api/filtering.py
  2. 2
      synapse/handlers/search.py

@ -202,6 +202,26 @@ class Filter(object):
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):
return filter(self.check, events)

@ -64,7 +64,7 @@ class SearchHandler(BaseHandler):
)
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)

Loading…
Cancel
Save