diff options
author | Richard van der Hoff <richard@matrix.org> | 2016-01-14 15:04:08 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2016-01-14 15:04:08 +0000 |
commit | 2978053d167ab8daef0213c04d634bf9dcd8143b (patch) | |
tree | ee0a21ca58d124bd9a83363ce079066ef8fadcef /synapse/handlers/room.py | |
parent | Merge pull request #496 from matrix-org/daniel/3 (diff) | |
parent | Merge pull request #492 from matrix-org/rav/event_context_shiz_release (diff) | |
download | synapse-2978053d167ab8daef0213c04d634bf9dcd8143b.tar.xz |
Merge branch 'release-v0.12.1' into develop
Diffstat (limited to 'synapse/handlers/room.py')
-rw-r--r-- | synapse/handlers/room.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 48a07e4e35..3a26f99a8b 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -880,28 +880,39 @@ class RoomContextHandler(BaseHandler): (excluding state). Returns: - dict + dict, or None if the event isn't found """ before_limit = math.floor(limit/2.) after_limit = limit - before_limit now_token = yield self.hs.get_event_sources().get_current_token() + def filter_evts(events): + return self._filter_events_for_client( + user.to_string(), + events, + is_guest=is_guest) + + event = yield self.store.get_event(event_id, get_prev_content=True, + allow_none=True) + if not event: + defer.returnValue(None) + return + + filtered = yield(filter_evts([event])) + if not filtered: + raise AuthError( + 403, + "You don't have permission to access that event." + ) + results = yield self.store.get_events_around( room_id, event_id, before_limit, after_limit ) - results["events_before"] = yield self._filter_events_for_client( - user.to_string(), - results["events_before"], - is_guest=is_guest, - ) - - results["events_after"] = yield self._filter_events_for_client( - user.to_string(), - results["events_after"], - is_guest=is_guest, - ) + results["events_before"] = yield filter_evts(results["events_before"]) + results["events_after"] = yield filter_evts(results["events_after"]) + results["event"] = event if results["events_after"]: last_event_id = results["events_after"][-1].event_id |