user-groups: Send remove members event.

This commit is contained in:
Umair Khan
2017-11-14 12:01:50 +05:00
committed by Tim Abbott
parent cec3f19366
commit 79f4a7627f
3 changed files with 22 additions and 0 deletions

View File

@@ -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)

View File

@@ -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'],))

View File

@@ -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([