mirror of
https://github.com/zulip/zulip.git
synced 2025-11-18 21:48:30 +00:00
api: Add support to change name of default stream groups.
This commit is contained in:
@@ -2972,6 +2972,17 @@ def do_remove_streams_from_default_stream_group(realm: Realm, group: DefaultStre
|
||||
group.save()
|
||||
notify_default_stream_groups(realm)
|
||||
|
||||
def do_change_default_stream_group_name(realm: Realm, group: DefaultStreamGroup, new_group_name: Text) -> None:
|
||||
if group.name == new_group_name:
|
||||
raise JsonableError(_("This default stream group is already named '%s'") % (new_group_name,))
|
||||
|
||||
if DefaultStreamGroup.objects.filter(name=new_group_name, realm=realm).exists():
|
||||
raise JsonableError(_("Default stream group '%s' already exists") % (new_group_name,))
|
||||
|
||||
group.name = new_group_name
|
||||
group.save()
|
||||
notify_default_stream_groups(realm)
|
||||
|
||||
def do_change_default_stream_group_description(realm: Realm, group: DefaultStreamGroup, new_description: Text) -> None:
|
||||
group.description = new_description
|
||||
group.save()
|
||||
|
||||
@@ -35,6 +35,7 @@ from zerver.lib.actions import (
|
||||
do_change_default_events_register_stream,
|
||||
do_change_default_sending_stream,
|
||||
do_change_default_stream_group_description,
|
||||
do_change_default_stream_group_name,
|
||||
do_change_full_name,
|
||||
do_change_icon_source,
|
||||
do_change_is_admin,
|
||||
@@ -1027,6 +1028,11 @@ class EventsRegisterTest(ZulipTestCase):
|
||||
error = default_stream_groups_checker('events[0]', events[0])
|
||||
self.assert_on_error(error)
|
||||
|
||||
events = self.do_test(lambda: do_change_default_stream_group_name(self.user_profile.realm,
|
||||
group, "New Group Name"))
|
||||
error = default_stream_groups_checker('events[0]', events[0])
|
||||
self.assert_on_error(error)
|
||||
|
||||
events = self.do_test(lambda: do_remove_default_stream_group(self.user_profile.realm, group))
|
||||
error = default_stream_groups_checker('events[0]', events[0])
|
||||
self.assert_on_error(error)
|
||||
|
||||
@@ -57,6 +57,7 @@ from zerver.lib.actions import (
|
||||
do_add_streams_to_default_stream_group, do_remove_streams_from_default_stream_group,
|
||||
do_remove_default_stream_group,
|
||||
do_change_default_stream_group_description,
|
||||
do_change_default_stream_group_name,
|
||||
lookup_default_stream_groups,
|
||||
)
|
||||
|
||||
@@ -885,6 +886,14 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
||||
self.assertEqual(default_stream_groups[0].description, new_description)
|
||||
self.assert_length(default_stream_groups, 1)
|
||||
|
||||
# Test changing default stream group name
|
||||
new_group_name = "new group1"
|
||||
do_change_default_stream_group_name(realm, group, new_group_name)
|
||||
default_stream_groups = get_default_stream_groups(realm)
|
||||
self.assert_length(default_stream_groups, 1)
|
||||
self.assertEqual(default_stream_groups[0].name, new_group_name)
|
||||
self.assertEqual(list(default_stream_groups[0].streams.all()), remaining_streams)
|
||||
|
||||
# Test removing default stream group
|
||||
do_remove_default_stream_group(realm, group)
|
||||
default_stream_groups = get_default_stream_groups(realm)
|
||||
@@ -892,8 +901,8 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
||||
|
||||
# Test creating a default stream group which contains a default stream
|
||||
do_add_default_stream(remaining_streams[0])
|
||||
with self.assertRaisesRegex(JsonableError, "'stream1' is a default stream and cannot be added to 'group1'"):
|
||||
do_create_default_stream_group(realm, group_name, "This is group1", remaining_streams)
|
||||
with self.assertRaisesRegex(JsonableError, "'stream1' is a default stream and cannot be added to 'new group1'"):
|
||||
do_create_default_stream_group(realm, new_group_name, "This is group1", remaining_streams)
|
||||
|
||||
def test_api_calls(self) -> None:
|
||||
self.login(self.example_email("hamlet"))
|
||||
@@ -992,7 +1001,7 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
||||
|
||||
result = self.client_patch("/json/default_stream_groups/{}".format(group_id),
|
||||
{"group_name": group_name, "op": "change"})
|
||||
self.assert_json_error(result, 'You must pass "new_description".')
|
||||
self.assert_json_error(result, 'You must pass "new_description" or "new_group_name".')
|
||||
|
||||
result = self.client_patch("/json/default_stream_groups/12345",
|
||||
{"op": "change", "new_description": ujson.dumps(new_description)})
|
||||
@@ -1008,6 +1017,27 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
||||
self.assertEqual(default_stream_groups[0].name, group_name)
|
||||
self.assertEqual(default_stream_groups[0].description, new_description)
|
||||
|
||||
# Test changing name of default stream group
|
||||
new_group_name = "new group1"
|
||||
do_create_default_stream_group(realm, "group2", "", [])
|
||||
result = self.client_patch("/json/default_stream_groups/{}".format(group_id),
|
||||
{"op": "change", "new_group_name": ujson.dumps("group2")})
|
||||
self.assert_json_error(result, "Default stream group 'group2' already exists")
|
||||
new_group = lookup_default_stream_groups(["group2"], realm)[0]
|
||||
do_remove_default_stream_group(realm, new_group)
|
||||
|
||||
result = self.client_patch("/json/default_stream_groups/{}".format(group_id),
|
||||
{"op": "change", "new_group_name": ujson.dumps(group_name)})
|
||||
self.assert_json_error(result, "This default stream group is already named 'group1'")
|
||||
|
||||
result = self.client_patch("/json/default_stream_groups/{}".format(group_id),
|
||||
{"op": "change", "new_group_name": ujson.dumps(new_group_name)})
|
||||
self.assert_json_success(result)
|
||||
default_stream_groups = get_default_stream_groups(realm)
|
||||
self.assert_length(default_stream_groups, 1)
|
||||
self.assertEqual(default_stream_groups[0].name, new_group_name)
|
||||
self.assertEqual(default_stream_groups[0].description, new_description)
|
||||
|
||||
# Test deleting a default stream group
|
||||
result = self.client_delete('/json/default_stream_groups/{}'.format(group_id))
|
||||
self.assert_json_success(result)
|
||||
|
||||
@@ -20,7 +20,7 @@ from zerver.lib.actions import bulk_remove_subscriptions, \
|
||||
do_remove_default_stream, get_topic_history_for_stream, \
|
||||
do_create_default_stream_group, do_add_streams_to_default_stream_group, \
|
||||
do_remove_streams_from_default_stream_group, do_remove_default_stream_group, \
|
||||
do_change_default_stream_group_description, \
|
||||
do_change_default_stream_group_description, do_change_default_stream_group_name, \
|
||||
prep_stream_welcome_message
|
||||
from zerver.lib.response import json_success, json_error, json_response
|
||||
from zerver.lib.streams import access_stream_by_id, access_stream_by_name, \
|
||||
@@ -90,12 +90,16 @@ def create_default_stream_group(request: HttpRequest, user_profile: UserProfile,
|
||||
@require_realm_admin
|
||||
@has_request_variables
|
||||
def update_default_stream_group_info(request: HttpRequest, user_profile: UserProfile, group_id: int,
|
||||
new_group_name: Text=REQ(validator=check_string, default=None),
|
||||
new_description: Text=REQ(validator=check_string, default=None)) -> None:
|
||||
if not new_description:
|
||||
return json_error(_('You must pass "new_description".'))
|
||||
if not new_group_name and not new_description:
|
||||
return json_error(_('You must pass "new_description" or "new_group_name".'))
|
||||
|
||||
group = access_default_stream_group_by_id(user_profile.realm, group_id,)
|
||||
do_change_default_stream_group_description(user_profile.realm, group, new_description)
|
||||
if new_group_name is not None:
|
||||
do_change_default_stream_group_name(user_profile.realm, group, new_group_name)
|
||||
if new_description is not None:
|
||||
do_change_default_stream_group_description(user_profile.realm, group, new_description)
|
||||
return json_success()
|
||||
|
||||
@require_realm_admin
|
||||
|
||||
Reference in New Issue
Block a user