mirror of
https://github.com/zulip/zulip.git
synced 2025-11-18 21:48:30 +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(
|
UserGroupMembership.objects.filter(
|
||||||
user_group_id=user_group.id,
|
user_group_id=user_group.id,
|
||||||
user_profile__in=user_profiles).delete()
|
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']:
|
if user_group['id'] == event['group_id']:
|
||||||
user_group['members'].extend(event['user_ids'])
|
user_group['members'].extend(event['user_ids'])
|
||||||
user_group['members'].sort()
|
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:
|
else:
|
||||||
raise AssertionError("Unexpected event type %s" % (event['type'],))
|
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_name,
|
||||||
do_update_user_group_description,
|
do_update_user_group_description,
|
||||||
bulk_add_members_to_user_group,
|
bulk_add_members_to_user_group,
|
||||||
|
remove_members_from_user_group,
|
||||||
)
|
)
|
||||||
from zerver.lib.events import (
|
from zerver.lib.events import (
|
||||||
apply_events,
|
apply_events,
|
||||||
@@ -1048,6 +1049,18 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
error = user_group_add_member_checker('events[0]', events[0])
|
error = user_group_add_member_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
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):
|
def test_default_stream_groups_events(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
default_stream_groups_checker = self.check_events_dict([
|
default_stream_groups_checker = self.check_events_dict([
|
||||||
|
|||||||
Reference in New Issue
Block a user