mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	Add create_streams_if_needed().
This commit is contained in:
		@@ -805,6 +805,21 @@ def create_stream_if_needed(realm, stream_name, invite_only=False):
 | 
				
			|||||||
            send_event(event, active_user_ids(realm))
 | 
					            send_event(event, active_user_ids(realm))
 | 
				
			||||||
    return stream, created
 | 
					    return stream, created
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def create_streams_if_needed(realm, stream_names, invite_only):
 | 
				
			||||||
 | 
					    # type: (Realm, List[text_type], bool) -> Tuple[List[Stream], List[Stream]]
 | 
				
			||||||
 | 
					    added_streams = [] # type: List[Stream]
 | 
				
			||||||
 | 
					    existing_streams = [] # type: List[Stream]
 | 
				
			||||||
 | 
					    for stream_name in stream_names:
 | 
				
			||||||
 | 
					        stream, created = create_stream_if_needed(realm,
 | 
				
			||||||
 | 
					                                                  stream_name,
 | 
				
			||||||
 | 
					                                                  invite_only=invite_only)
 | 
				
			||||||
 | 
					        if created:
 | 
				
			||||||
 | 
					            added_streams.append(stream)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            existing_streams.append(stream)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return added_streams, existing_streams
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def recipient_for_emails(emails, not_forged_mirror_message,
 | 
					def recipient_for_emails(emails, not_forged_mirror_message,
 | 
				
			||||||
                         user_profile, sender):
 | 
					                         user_profile, sender):
 | 
				
			||||||
    # type: (Iterable[text_type], bool, UserProfile, UserProfile) -> Recipient
 | 
					    # type: (Iterable[text_type], bool, UserProfile, UserProfile) -> Recipient
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,8 @@ from zerver.lib.actions import (
 | 
				
			|||||||
    do_create_realm, do_remove_default_stream, do_set_realm_create_stream_by_admins_only,
 | 
					    do_create_realm, do_remove_default_stream, do_set_realm_create_stream_by_admins_only,
 | 
				
			||||||
    gather_subscriptions_helper,
 | 
					    gather_subscriptions_helper,
 | 
				
			||||||
    gather_subscriptions, get_default_streams_for_realm, get_realm, get_stream,
 | 
					    gather_subscriptions, get_default_streams_for_realm, get_realm, get_stream,
 | 
				
			||||||
    get_user_profile_by_email, set_default_streams, get_subscription
 | 
					    get_user_profile_by_email, set_default_streams, get_subscription,
 | 
				
			||||||
 | 
					    create_streams_if_needed
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from zerver.views.streams import (
 | 
					from zerver.views.streams import (
 | 
				
			||||||
@@ -50,6 +51,31 @@ import six
 | 
				
			|||||||
from six import text_type
 | 
					from six import text_type
 | 
				
			||||||
from six.moves import range, urllib
 | 
					from six.moves import range, urllib
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestCreateStreams(ZulipTestCase):
 | 
				
			||||||
 | 
					    def test_creating_streams(self):
 | 
				
			||||||
 | 
					        # type: () -> None
 | 
				
			||||||
 | 
					        stream_names = [u'new1', u'new2', u'new3']
 | 
				
			||||||
 | 
					        realm = get_realm('zulip.com')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        new_streams, existing_streams = create_streams_if_needed(
 | 
				
			||||||
 | 
					            realm,
 | 
				
			||||||
 | 
					            stream_names,
 | 
				
			||||||
 | 
					            invite_only=True)
 | 
				
			||||||
 | 
					        self.assertEqual(len(new_streams), 3)
 | 
				
			||||||
 | 
					        self.assertEqual(len(existing_streams), 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        actual_stream_names = {stream.name for stream in new_streams}
 | 
				
			||||||
 | 
					        self.assertEqual(actual_stream_names, set(stream_names))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        new_streams, existing_streams = create_streams_if_needed(
 | 
				
			||||||
 | 
					            realm,
 | 
				
			||||||
 | 
					            stream_names,
 | 
				
			||||||
 | 
					            invite_only=True)
 | 
				
			||||||
 | 
					        self.assertEqual(len(new_streams), 0)
 | 
				
			||||||
 | 
					        self.assertEqual(len(existing_streams), 3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        actual_stream_names = {stream.name for stream in existing_streams}
 | 
				
			||||||
 | 
					        self.assertEqual(actual_stream_names, set(stream_names))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StreamAdminTest(ZulipTestCase):
 | 
					class StreamAdminTest(ZulipTestCase):
 | 
				
			||||||
    def test_make_stream_public(self):
 | 
					    def test_make_stream_public(self):
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user