diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2019-02-19 10:16:42 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-19 10:16:42 +0000 |
commit | 968a30a75cc086524f76be81d10f813b317de81c (patch) | |
tree | ea71456db48e06913ee2621076d2bf19983cc778 /synapse/handlers/room.py | |
parent | Merge pull request #4632 from matrix-org/erikj/basic_sentry (diff) | |
parent | lint (diff) | |
download | synapse-968a30a75cc086524f76be81d10f813b317de81c.tar.xz |
Merge pull request #4642 from matrix-org/anoa/bans_room_upgrade
Transfer bans on room upgrade
Diffstat (limited to 'synapse/handlers/room.py')
-rw-r--r-- | synapse/handlers/room.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index f9af1f0046..67b15697fd 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -311,6 +311,28 @@ class RoomCreationHandler(BaseHandler): creation_content=creation_content, ) + # Transfer membership events + old_room_member_state_ids = yield self.store.get_filtered_current_state_ids( + old_room_id, StateFilter.from_types([(EventTypes.Member, None)]), + ) + + # map from event_id to BaseEvent + old_room_member_state_events = yield self.store.get_events( + old_room_member_state_ids.values(), + ) + for k, old_event in iteritems(old_room_member_state_events): + # Only transfer ban events + if ("membership" in old_event.content and + old_event.content["membership"] == "ban"): + yield self.room_member_handler.update_membership( + requester, + UserID.from_string(old_event['state_key']), + new_room_id, + "ban", + ratelimit=False, + content=old_event.content, + ) + # XXX invites/joins # XXX 3pid invites |