Filter room ids before hitting the database
parent
c8baada94a
commit
5c41224a89
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue