mirror of
https://github.com/zulip/zulip.git
synced 2025-11-18 12:54:58 +00:00
user-groups: Send remove members event.
This commit is contained in:
@@ -4358,3 +4358,6 @@ def remove_members_from_user_group(user_group, user_profiles):
|
||||
UserGroupMembership.objects.filter(
|
||||
user_group_id=user_group.id,
|
||||
user_profile__in=user_profiles).delete()
|
||||
|
||||
user_ids = [up.id for up in user_profiles]
|
||||
do_send_user_group_members_update_event('remove_members', user_group, user_ids)
|
||||
|
||||
@@ -565,6 +565,12 @@ def apply_event(state, event, user_profile, client_gravatar, include_subscribers
|
||||
if user_group['id'] == event['group_id']:
|
||||
user_group['members'].extend(event['user_ids'])
|
||||
user_group['members'].sort()
|
||||
elif event['op'] == 'remove_members':
|
||||
for user_group in state['realm_user_groups']:
|
||||
if user_group['id'] == event['group_id']:
|
||||
members = set(user_group['members'])
|
||||
user_group['members'] = list(members - set(event['user_ids']))
|
||||
user_group['members'].sort()
|
||||
else:
|
||||
raise AssertionError("Unexpected event type %s" % (event['type'],))
|
||||
|
||||
|
||||
@@ -79,6 +79,7 @@ from zerver.lib.actions import (
|
||||
do_update_user_group_name,
|
||||
do_update_user_group_description,
|
||||
bulk_add_members_to_user_group,
|
||||
remove_members_from_user_group,
|
||||
)
|
||||
from zerver.lib.events import (
|
||||
apply_events,
|
||||
@@ -1048,6 +1049,18 @@ class EventsRegisterTest(ZulipTestCase):
|
||||
error = user_group_add_member_checker('events[0]', events[0])
|
||||
self.assert_on_error(error)
|
||||
|
||||
# Test remove members
|
||||
user_group_remove_member_checker = self.check_events_dict([
|
||||
('type', equals('user_group')),
|
||||
('op', equals('remove_members')),
|
||||
('group_id', check_int),
|
||||
('user_ids', check_list(check_int)),
|
||||
])
|
||||
hamlet = self.example_user('hamlet')
|
||||
events = self.do_test(lambda: remove_members_from_user_group(backend, [hamlet]))
|
||||
error = user_group_remove_member_checker('events[0]', events[0])
|
||||
self.assert_on_error(error)
|
||||
|
||||
def test_default_stream_groups_events(self):
|
||||
# type: () -> None
|
||||
default_stream_groups_checker = self.check_events_dict([
|
||||
|
||||
Reference in New Issue
Block a user