refactoring: Move set_default_streams into do_create_realm.

After the commits leading up to this, the only meaningful use of this
function was in the realm creation process.
This commit is contained in:
Rishi Gupta
2019-02-23 19:40:44 -08:00
committed by Tim Abbott
parent e527de3937
commit e8741c448d
5 changed files with 15 additions and 75 deletions

View File

@@ -3550,6 +3550,10 @@ def do_create_realm(string_id: str, name: str,
notifications_stream = ensure_stream(realm, Realm.DEFAULT_NOTIFICATION_STREAM_NAME) notifications_stream = ensure_stream(realm, Realm.DEFAULT_NOTIFICATION_STREAM_NAME)
realm.notifications_stream = notifications_stream realm.notifications_stream = notifications_stream
# With the current initial streams situation, the only public
# stream is the notifications_stream.
DefaultStream.objects.create(stream=notifications_stream, realm=realm)
signup_notifications_stream = ensure_stream( signup_notifications_stream = ensure_stream(
realm, Realm.INITIAL_PRIVATE_STREAM_NAME, invite_only=True, realm, Realm.INITIAL_PRIVATE_STREAM_NAME, invite_only=True,
stream_description="A private stream for core team members.") stream_description="A private stream for core team members.")
@@ -3641,25 +3645,6 @@ def lookup_default_stream_groups(default_stream_group_names: List[str],
default_stream_groups.append(default_stream_group) default_stream_groups.append(default_stream_group)
return default_stream_groups return default_stream_groups
def set_default_streams(realm: Realm, stream_dict: Dict[str, Dict[str, Any]]) -> None:
DefaultStream.objects.filter(realm=realm).delete()
stream_names = []
for name, options in stream_dict.items():
stream_names.append(name)
stream = ensure_stream(realm,
name,
invite_only = options.get("invite_only", False),
stream_description = options.get("description", ''))
DefaultStream.objects.create(stream=stream, realm=realm)
# Always include the realm's default notifications streams, if it exists
if realm.notifications_stream is not None:
DefaultStream.objects.get_or_create(stream=realm.notifications_stream, realm=realm)
log_event({'type': 'default_streams',
'realm': realm.string_id,
'streams': stream_names})
def notify_default_streams(realm: Realm) -> None: def notify_default_streams(realm: Realm) -> None:
event = dict( event = dict(
type="default_streams", type="default_streams",

View File

@@ -28,12 +28,11 @@ from zerver.views.development.registration import confirmation_key
from zerver.models import ( from zerver.models import (
get_realm, get_user, get_realm_stream, get_stream_recipient, get_realm, get_user, get_realm_stream, get_stream_recipient,
CustomProfileField, CustomProfileFieldValue, PreregistrationUser, CustomProfileField, CustomProfileFieldValue, DefaultStream, PreregistrationUser,
Realm, Recipient, Message, ScheduledEmail, UserProfile, UserMessage, Realm, Recipient, Message, ScheduledEmail, UserProfile, UserMessage,
Stream, Subscription, flush_per_request_caches Stream, Subscription, flush_per_request_caches
) )
from zerver.lib.actions import ( from zerver.lib.actions import (
set_default_streams,
do_change_is_admin, do_change_is_admin,
get_stream, get_stream,
do_create_default_stream_group, do_create_default_stream_group,
@@ -68,7 +67,7 @@ import re
import smtplib import smtplib
import ujson import ujson
from typing import Any, Dict, List, Optional from typing import Any, List, Optional
import urllib import urllib
import pytz import pytz
@@ -130,12 +129,9 @@ class AddNewUserHistoryTest(ZulipTestCase):
def test_add_new_user_history_race(self) -> None: def test_add_new_user_history_race(self) -> None:
"""Sends a message during user creation""" """Sends a message during user creation"""
# Create a user who hasn't had historical messages added # Create a user who hasn't had historical messages added
stream_dict = {
"Denmark": {"description": "A Scandinavian country", "invite_only": False},
"Verona": {"description": "A city in Italy", "invite_only": False}
} # type: Dict[str, Dict[str, Any]]
realm = get_realm('zulip') realm = get_realm('zulip')
set_default_streams(realm, stream_dict) stream = Stream.objects.get(realm=realm, name='Denmark')
DefaultStream.objects.create(stream=stream, realm=realm)
with patch("zerver.lib.actions.add_new_user_history"): with patch("zerver.lib.actions.add_new_user_history"):
self.register(self.nonreg_email('test'), "test") self.register(self.nonreg_email('test'), "test")
user_profile = self.nonreg_user('test') user_profile = self.nonreg_user('test')
@@ -447,12 +443,11 @@ class LoginTest(ZulipTestCase):
def test_register(self) -> None: def test_register(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
stream_dict = {"stream_"+str(i): {"description": "stream_%s_description" % i, "invite_only": False} stream_names = ["stream_{}".format(i) for i in range(40)]
for i in range(40)} # type: Dict[str, Dict[str, Any]] for stream_name in stream_names:
for stream_name in stream_dict.keys(): stream = self.make_stream(stream_name, realm=realm)
self.make_stream(stream_name, realm=realm) DefaultStream.objects.create(stream=stream, realm=realm)
set_default_streams(realm, stream_dict)
# Clear all the caches. # Clear all the caches.
flush_per_request_caches() flush_per_request_caches()
ContentType.objects.clear_cache() ContentType.objects.clear_cache()

View File

@@ -52,7 +52,7 @@ from zerver.lib.actions import (
do_create_realm, do_remove_default_stream, bulk_get_subscriber_user_ids, do_create_realm, do_remove_default_stream, bulk_get_subscriber_user_ids,
gather_subscriptions_helper, bulk_add_subscriptions, bulk_remove_subscriptions, gather_subscriptions_helper, bulk_add_subscriptions, bulk_remove_subscriptions,
gather_subscriptions, get_default_streams_for_realm, get_realm, get_stream, gather_subscriptions, get_default_streams_for_realm, get_realm, get_stream,
set_default_streams, do_get_streams, do_get_streams,
create_stream_if_needed, create_streams_if_needed, create_stream_if_needed, create_streams_if_needed,
ensure_stream, ensure_stream,
do_deactivate_stream, do_deactivate_stream,
@@ -1052,44 +1052,6 @@ class DefaultStreamTest(ZulipTestCase):
stream_names = [s.name for s in streams] stream_names = [s.name for s in streams]
return set(stream_names) return set(stream_names)
def get_default_stream_descriptions(self, realm: Realm) -> Set[str]:
streams = get_default_streams_for_realm(realm.id)
stream_descriptions = [s.description for s in streams]
return set(stream_descriptions)
def test_set_default_streams(self) -> None:
realm = do_create_realm("testrealm", "Test Realm")
stream_dict = {
"apple": {"description": "A red fruit", "invite_only": False},
"banana": {"description": "A yellow fruit", "invite_only": False},
"Carrot Cake": {"description": "A delicious treat", "invite_only": False}
} # type: Dict[str, Dict[str, Any]]
expected_names = list(stream_dict.keys())
expected_names.append("general")
expected_descriptions = [i["description"] for i in stream_dict.values()] + [""]
set_default_streams(realm, stream_dict)
stream_names_set = self.get_default_stream_names(realm)
stream_descriptions_set = self.get_default_stream_descriptions(realm)
self.assertEqual(stream_names_set, set(expected_names))
self.assertEqual(stream_descriptions_set, set(expected_descriptions))
def test_set_default_streams_no_notifications_stream(self) -> None:
realm = do_create_realm("testrealm", "Test Realm")
realm.notifications_stream = None
realm.save(update_fields=["notifications_stream"])
stream_dict = {
"apple": {"description": "A red fruit", "invite_only": False},
"banana": {"description": "A yellow fruit", "invite_only": False},
"Carrot Cake": {"description": "A delicious treat", "invite_only": False}
} # type: Dict[str, Dict[str, Any]]
expected_names = list(stream_dict.keys())
expected_descriptions = [i["description"] for i in stream_dict.values()]
set_default_streams(realm, stream_dict)
stream_names_set = self.get_default_stream_names(realm)
stream_descriptions_set = self.get_default_stream_descriptions(realm)
self.assertEqual(stream_names_set, set(expected_names))
self.assertEqual(stream_descriptions_set, set(expected_descriptions))
def test_add_and_remove_default_stream(self) -> None: def test_add_and_remove_default_stream(self) -> None:
realm = get_realm("zulip") realm = get_realm("zulip")
stream = ensure_stream(realm, "Added Stream") stream = ensure_stream(realm, "Added Stream")

View File

@@ -18,7 +18,7 @@ from zerver.models import UserProfile, Realm, Stream, MultiuseInvite, \
from zerver.lib.send_email import send_email, FromAddress from zerver.lib.send_email import send_email, FromAddress
from zerver.lib.actions import do_change_password, do_change_full_name, \ from zerver.lib.actions import do_change_password, do_change_full_name, \
do_activate_user, do_create_user, do_create_realm, \ do_activate_user, do_create_user, do_create_realm, \
validate_email_for_realm, set_default_streams, \ validate_email_for_realm, \
do_set_user_display_setting, lookup_default_stream_groups, bulk_add_subscriptions do_set_user_display_setting, lookup_default_stream_groups, bulk_add_subscriptions
from zerver.forms import RegistrationForm, HomepageForm, RealmCreationForm, \ from zerver.forms import RegistrationForm, HomepageForm, RealmCreationForm, \
FindMyTeamForm, RealmRedirectForm FindMyTeamForm, RealmRedirectForm
@@ -193,7 +193,6 @@ def accounts_register(request: HttpRequest) -> HttpResponse:
string_id = form.cleaned_data['realm_subdomain'] string_id = form.cleaned_data['realm_subdomain']
realm_name = form.cleaned_data['realm_name'] realm_name = form.cleaned_data['realm_name']
realm = do_create_realm(string_id, realm_name) realm = do_create_realm(string_id, realm_name)
set_default_streams(realm, {})
setup_realm_internal_bots(realm) setup_realm_internal_bots(realm)
assert(realm is not None) assert(realm is not None)

View File

@@ -1,7 +1,7 @@
from typing import Any from typing import Any
from zerver.lib.actions import do_create_realm, do_create_user, \ from zerver.lib.actions import do_create_realm, do_create_user, \
bulk_add_subscriptions, set_default_streams bulk_add_subscriptions
from zerver.lib.management import ZulipBaseCommand from zerver.lib.management import ZulipBaseCommand
from zerver.lib.onboarding import send_initial_realm_messages from zerver.lib.onboarding import send_initial_realm_messages
from zerver.models import Realm, UserProfile from zerver.models import Realm, UserProfile
@@ -13,7 +13,6 @@ class Command(ZulipBaseCommand):
string_id = 'realm%02d' % ( string_id = 'realm%02d' % (
Realm.objects.filter(string_id__startswith='realm').count(),) Realm.objects.filter(string_id__startswith='realm').count(),)
realm = do_create_realm(string_id, string_id) realm = do_create_realm(string_id, string_id)
set_default_streams(realm, {})
name = '%02d-user' % ( name = '%02d-user' % (
UserProfile.objects.filter(email__contains='user@').count(),) UserProfile.objects.filter(email__contains='user@').count(),)