mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	Bulk-send peer_add events in bulk_add_subscriptions().
Send a single peer_add event per stream that has multiple users. (imported from commit 1027b212557f848d437128a03698ecd54575c3fd)
This commit is contained in:
		@@ -785,12 +785,12 @@ def bulk_add_subscriptions(streams, users):
 | 
			
		||||
        new_users = filter(is_new_user, users)
 | 
			
		||||
        new_user_ids = [user.id for user in new_users]
 | 
			
		||||
        other_user_ids = list(set(get_subscriber_ids(stream)) - set(new_user_ids))
 | 
			
		||||
        for user_profile in new_users:
 | 
			
		||||
            for other_user_id in other_user_ids:
 | 
			
		||||
        if other_user_ids:
 | 
			
		||||
            for user_profile in new_users:
 | 
			
		||||
                notice = dict(event=dict(type="subscriptions", op="peer_add",
 | 
			
		||||
                                         subscriptions=[stream.name],
 | 
			
		||||
                                         user_email=user_profile.email),
 | 
			
		||||
                              users=[other_user_id])
 | 
			
		||||
                              users=other_user_ids)
 | 
			
		||||
                tornado_callbacks.send_notification(notice)
 | 
			
		||||
 | 
			
		||||
    return ([(user_profile, stream_name) for (user_profile, recipient_id, stream_name) in new_subs] +
 | 
			
		||||
 
 | 
			
		||||
@@ -1152,8 +1152,9 @@ class SubscriptionAPITest(AuthedTestCase):
 | 
			
		||||
                    dict(principals=ujson.dumps([self.test_email])),
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        add_event = events.pop(0)
 | 
			
		||||
        add_peer_events = events
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(events), 2)
 | 
			
		||||
        add_event, add_peer_event = events
 | 
			
		||||
        self.assertEqual(add_event['event']['type'], 'subscriptions')
 | 
			
		||||
        self.assertEqual(add_event['event']['op'], 'add')
 | 
			
		||||
        self.assertEqual(add_event['users'], [get_user_profile_by_email(self.test_email).id])
 | 
			
		||||
@@ -1162,11 +1163,10 @@ class SubscriptionAPITest(AuthedTestCase):
 | 
			
		||||
                set([email1, email2, self.test_email])
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(add_peer_events), 2)
 | 
			
		||||
        for ev in add_peer_events:
 | 
			
		||||
            self.assertEqual(ev['event']['type'], 'subscriptions')
 | 
			
		||||
            self.assertEqual(ev['event']['op'], 'peer_add')
 | 
			
		||||
            self.assertEqual(ev['event']['user_email'], self.test_email)
 | 
			
		||||
        self.assertEqual(len(add_peer_event['users']), 2)
 | 
			
		||||
        self.assertEqual(add_peer_event['event']['type'], 'subscriptions')
 | 
			
		||||
        self.assertEqual(add_peer_event['event']['op'], 'peer_add')
 | 
			
		||||
        self.assertEqual(add_peer_event['event']['user_email'], self.test_email)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        # Finally, add othello, exercising the do_add_subscription() code path.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user