mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 06:53:25 +00:00
api: Pass group id instead of name to default stream group api.
This commit is contained in:
@@ -2947,44 +2947,32 @@ def do_create_default_stream_group(realm: Realm, group_name: Text, streams: List
|
|||||||
group.save()
|
group.save()
|
||||||
notify_default_stream_groups(realm)
|
notify_default_stream_groups(realm)
|
||||||
|
|
||||||
def do_add_streams_to_default_stream_group(realm: Realm, group_name: Text, streams: List[Stream]) -> None:
|
def do_add_streams_to_default_stream_group(realm: Realm, group: DefaultStreamGroup, streams: List[Stream]) -> None:
|
||||||
try:
|
|
||||||
group = DefaultStreamGroup.objects.get(name=group_name, realm=realm)
|
|
||||||
except DefaultStreamGroup.DoesNotExist:
|
|
||||||
raise JsonableError(_("Default stream group '%s' does not exist") % (group_name,))
|
|
||||||
|
|
||||||
default_streams = get_default_streams_for_realm(realm.id)
|
default_streams = get_default_streams_for_realm(realm.id)
|
||||||
for stream in streams:
|
for stream in streams:
|
||||||
if stream in default_streams:
|
if stream in default_streams:
|
||||||
raise JsonableError(_("'%s' is a default stream and cannot be added to '%s'") % (stream.name, group_name))
|
raise JsonableError(_("'%s' is a default stream and cannot be added to '%s'") % (stream.name, group.name))
|
||||||
if stream in group.streams.all():
|
if stream in group.streams.all():
|
||||||
raise JsonableError(_("Stream '%s' is already present in default stream group '%s'")
|
raise JsonableError(_("Stream '%s' is already present in default stream group '%s'")
|
||||||
% (stream.name, group_name))
|
% (stream.name, group.name))
|
||||||
group.streams.add(stream)
|
group.streams.add(stream)
|
||||||
|
|
||||||
group.save()
|
group.save()
|
||||||
notify_default_stream_groups(realm)
|
notify_default_stream_groups(realm)
|
||||||
|
|
||||||
def do_remove_streams_from_default_stream_group(realm: Realm, group_name: Text, streams: List[Stream]) -> None:
|
def do_remove_streams_from_default_stream_group(realm: Realm, group: DefaultStreamGroup,
|
||||||
try:
|
streams: List[Stream]) -> None:
|
||||||
group = DefaultStreamGroup.objects.get(name=group_name, realm=realm)
|
|
||||||
except DefaultStreamGroup.DoesNotExist:
|
|
||||||
raise JsonableError(_("Default stream group '%s' does not exist") % (group_name,))
|
|
||||||
|
|
||||||
for stream in streams:
|
for stream in streams:
|
||||||
if stream not in group.streams.all():
|
if stream not in group.streams.all():
|
||||||
raise JsonableError(_("Stream '%s' is not present in default stream group '%s'")
|
raise JsonableError(_("Stream '%s' is not present in default stream group '%s'")
|
||||||
% (stream.name, group_name))
|
% (stream.name, group.name))
|
||||||
group.streams.remove(stream)
|
group.streams.remove(stream)
|
||||||
|
|
||||||
group.save()
|
group.save()
|
||||||
notify_default_stream_groups(realm)
|
notify_default_stream_groups(realm)
|
||||||
|
|
||||||
def do_remove_default_stream_group(realm: Realm, group_name: Text) -> None:
|
def do_remove_default_stream_group(realm: Realm, group: DefaultStreamGroup) -> None:
|
||||||
try:
|
group.delete()
|
||||||
DefaultStreamGroup.objects.filter(name=group_name, realm=realm).delete()
|
|
||||||
except DefaultStreamGroup.DoesNotExist:
|
|
||||||
raise JsonableError(_("Default stream group '%s' does not exist") % (group_name,))
|
|
||||||
notify_default_stream_groups(realm)
|
notify_default_stream_groups(realm)
|
||||||
|
|
||||||
def get_default_streams_for_realm(realm_id):
|
def get_default_streams_for_realm(realm_id):
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from zerver.lib.actions import check_stream_name, create_streams_if_needed
|
|||||||
from zerver.lib.request import JsonableError
|
from zerver.lib.request import JsonableError
|
||||||
from zerver.models import UserProfile, Stream, Subscription, \
|
from zerver.models import UserProfile, Stream, Subscription, \
|
||||||
Realm, Recipient, bulk_get_recipients, get_stream_recipient, get_stream, \
|
Realm, Recipient, bulk_get_recipients, get_stream_recipient, get_stream, \
|
||||||
bulk_get_streams, get_realm_stream
|
bulk_get_streams, get_realm_stream, DefaultStreamGroup
|
||||||
|
|
||||||
def access_stream_for_delete(user_profile, stream_id):
|
def access_stream_for_delete(user_profile, stream_id):
|
||||||
# type: (UserProfile, int) -> Stream
|
# type: (UserProfile, int) -> Stream
|
||||||
@@ -220,3 +220,9 @@ def list_to_streams(streams_raw, user_profile, autocreate=False):
|
|||||||
existing_streams += dup_streams
|
existing_streams += dup_streams
|
||||||
|
|
||||||
return existing_streams, created_streams
|
return existing_streams, created_streams
|
||||||
|
|
||||||
|
def access_default_stream_group_by_id(realm: Realm, group_id: int) -> DefaultStreamGroup:
|
||||||
|
try:
|
||||||
|
return DefaultStreamGroup.objects.get(realm=realm, id=group_id)
|
||||||
|
except DefaultStreamGroup.DoesNotExist:
|
||||||
|
raise JsonableError(_("Default stream group with id '%s' does not exist." % (group_id,)))
|
||||||
|
|||||||
@@ -1810,7 +1810,9 @@ class DefaultStreamGroup(models.Model):
|
|||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
# type: () -> Dict[str, Any]
|
# type: () -> Dict[str, Any]
|
||||||
return dict(name=self.name, streams=[stream.to_dict() for stream in self.streams.all()])
|
return dict(name=self.name,
|
||||||
|
id=self.id,
|
||||||
|
streams=[stream.to_dict() for stream in self.streams.all()])
|
||||||
|
|
||||||
def get_default_stream_groups(realm):
|
def get_default_stream_groups(realm):
|
||||||
# type: (Realm) -> List[DefaultStreamGroup]
|
# type: (Realm) -> List[DefaultStreamGroup]
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ from zerver.lib.actions import (
|
|||||||
do_update_pointer,
|
do_update_pointer,
|
||||||
do_update_user_presence,
|
do_update_user_presence,
|
||||||
log_event,
|
log_event,
|
||||||
|
lookup_default_stream_groups,
|
||||||
notify_realm_custom_profile_fields,
|
notify_realm_custom_profile_fields,
|
||||||
)
|
)
|
||||||
from zerver.lib.events import (
|
from zerver.lib.events import (
|
||||||
@@ -989,6 +990,7 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
('type', equals('default_stream_groups')),
|
('type', equals('default_stream_groups')),
|
||||||
('default_stream_groups', check_list(check_dict_only([
|
('default_stream_groups', check_list(check_dict_only([
|
||||||
('name', check_string),
|
('name', check_string),
|
||||||
|
('id', check_int),
|
||||||
('streams', check_list(check_dict_only([
|
('streams', check_list(check_dict_only([
|
||||||
('description', check_string),
|
('description', check_string),
|
||||||
('invite_only', check_bool),
|
('invite_only', check_bool),
|
||||||
@@ -1006,19 +1008,19 @@ class EventsRegisterTest(ZulipTestCase):
|
|||||||
error = default_stream_groups_checker('events[0]', events[0])
|
error = default_stream_groups_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
|
group = lookup_default_stream_groups(["group1"], self.user_profile.realm)[0]
|
||||||
venice_stream = get_stream("Venice", self.user_profile.realm)
|
venice_stream = get_stream("Venice", self.user_profile.realm)
|
||||||
events = self.do_test(lambda: do_add_streams_to_default_stream_group(self.user_profile.realm,
|
events = self.do_test(lambda: do_add_streams_to_default_stream_group(self.user_profile.realm,
|
||||||
"group1", [venice_stream]))
|
group, [venice_stream]))
|
||||||
error = default_stream_groups_checker('events[0]', events[0])
|
error = default_stream_groups_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
events = self.do_test(lambda: do_remove_streams_from_default_stream_group(self.user_profile.realm,
|
events = self.do_test(lambda: do_remove_streams_from_default_stream_group(self.user_profile.realm,
|
||||||
"group1", [venice_stream]))
|
group, [venice_stream]))
|
||||||
error = default_stream_groups_checker('events[0]', events[0])
|
error = default_stream_groups_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
events = self.do_test(lambda: do_remove_default_stream_group(self.user_profile.realm,
|
events = self.do_test(lambda: do_remove_default_stream_group(self.user_profile.realm, group))
|
||||||
"group1"))
|
|
||||||
error = default_stream_groups_checker('events[0]', events[0])
|
error = default_stream_groups_checker('events[0]', events[0])
|
||||||
self.assert_on_error(error)
|
self.assert_on_error(error)
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ from zerver.lib.actions import (
|
|||||||
do_create_default_stream_group,
|
do_create_default_stream_group,
|
||||||
do_add_streams_to_default_stream_group, do_remove_streams_from_default_stream_group,
|
do_add_streams_to_default_stream_group, do_remove_streams_from_default_stream_group,
|
||||||
do_remove_default_stream_group,
|
do_remove_default_stream_group,
|
||||||
|
lookup_default_stream_groups,
|
||||||
)
|
)
|
||||||
|
|
||||||
from zerver.views.streams import (
|
from zerver.views.streams import (
|
||||||
@@ -852,6 +853,7 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
||||||
|
|
||||||
# Test adding streams to existing default stream group
|
# Test adding streams to existing default stream group
|
||||||
|
group = lookup_default_stream_groups(["group1"], realm)[0]
|
||||||
new_stream_names = ["stream4", "stream5"]
|
new_stream_names = ["stream4", "stream5"]
|
||||||
new_streams = []
|
new_streams = []
|
||||||
for new_stream_name in new_stream_names:
|
for new_stream_name in new_stream_names:
|
||||||
@@ -859,14 +861,14 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
new_streams.append(new_stream)
|
new_streams.append(new_stream)
|
||||||
streams.append(new_stream)
|
streams.append(new_stream)
|
||||||
|
|
||||||
do_add_streams_to_default_stream_group(realm, group_name, new_streams)
|
do_add_streams_to_default_stream_group(realm, group, new_streams)
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
self.assert_length(default_stream_groups, 1)
|
self.assert_length(default_stream_groups, 1)
|
||||||
self.assertEqual(default_stream_groups[0].name, group_name)
|
self.assertEqual(default_stream_groups[0].name, group_name)
|
||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
||||||
|
|
||||||
# Test removing streams from existing default stream group
|
# Test removing streams from existing default stream group
|
||||||
do_remove_streams_from_default_stream_group(realm, group_name, new_streams)
|
do_remove_streams_from_default_stream_group(realm, group, new_streams)
|
||||||
remaining_streams = streams[0:3]
|
remaining_streams = streams[0:3]
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
self.assert_length(default_stream_groups, 1)
|
self.assert_length(default_stream_groups, 1)
|
||||||
@@ -874,7 +876,7 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), remaining_streams)
|
self.assertEqual(list(default_stream_groups[0].streams.all()), remaining_streams)
|
||||||
|
|
||||||
# Test removing default stream group
|
# Test removing default stream group
|
||||||
do_remove_default_stream_group(realm, group_name)
|
do_remove_default_stream_group(realm, group)
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
self.assert_length(default_stream_groups, 0)
|
self.assert_length(default_stream_groups, 0)
|
||||||
|
|
||||||
@@ -900,11 +902,7 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
(stream, _) = create_stream_if_needed(realm, stream_name)
|
(stream, _) = create_stream_if_needed(realm, stream_name)
|
||||||
streams.append(stream)
|
streams.append(stream)
|
||||||
|
|
||||||
result = self.client_post('/json/default_stream_groups',
|
result = self.client_post('/json/default_stream_groups/create',
|
||||||
{"group_name": "", "stream_names": ujson.dumps(stream_names)})
|
|
||||||
self.assert_json_error(result, "Invalid default stream group name ''")
|
|
||||||
|
|
||||||
result = self.client_post('/json/default_stream_groups',
|
|
||||||
{"group_name": group_name, "stream_names": ujson.dumps(stream_names)})
|
{"group_name": group_name, "stream_names": ujson.dumps(stream_names)})
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
@@ -913,6 +911,7 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
||||||
|
|
||||||
# Test adding streams to existing default stream group
|
# Test adding streams to existing default stream group
|
||||||
|
group_id = default_stream_groups[0].id
|
||||||
new_stream_names = ["stream4", "stream5"]
|
new_stream_names = ["stream4", "stream5"]
|
||||||
new_streams = []
|
new_streams = []
|
||||||
for new_stream_name in new_stream_names:
|
for new_stream_name in new_stream_names:
|
||||||
@@ -920,75 +919,69 @@ class DefaultStreamGroupTest(ZulipTestCase):
|
|||||||
new_streams.append(new_stream)
|
new_streams.append(new_stream)
|
||||||
streams.append(new_stream)
|
streams.append(new_stream)
|
||||||
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
{"group_name": group_name,
|
{"stream_names": ujson.dumps(new_stream_names)})
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
|
||||||
self.assert_json_error(result, "Missing 'op' argument")
|
self.assert_json_error(result, "Missing 'op' argument")
|
||||||
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
{"group_name": group_name, "op": "invalid",
|
{"op": "invalid", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
self.assert_json_error(result, 'Invalid value for "op". Specify one of "add" or "remove".')
|
||||||
self.assert_json_error(result, 'Nothing to do. Specify at least one of "add" or "remove".')
|
|
||||||
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
result = self.client_patch("/json/default_stream_groups/12345/streams",
|
||||||
{"group_name": "dumbledore's army", "op": "add",
|
{"op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
self.assert_json_error(result, "Default stream group with id '12345' does not exist.")
|
||||||
self.assert_json_error(result, "Default stream group 'dumbledore's army' does not exist")
|
|
||||||
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id), {"op": "add"})
|
||||||
|
self.assert_json_error(result, "Missing 'stream_names' argument")
|
||||||
|
|
||||||
do_add_default_stream(new_streams[0])
|
do_add_default_stream(new_streams[0])
|
||||||
result = self.client_patch('/json/default_stream_groups',
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
{"group_name": group_name, "op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
{"op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
self.assert_json_error(result, "'stream4' is a default stream and cannot be added to 'group1'")
|
self.assert_json_error(result, "'stream4' is a default stream and cannot be added to 'group1'")
|
||||||
|
|
||||||
do_remove_default_stream(new_streams[0])
|
do_remove_default_stream(new_streams[0])
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
{"group_name": group_name, "op": "add",
|
{"op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
|
||||||
self.assert_length(default_stream_groups, 1)
|
|
||||||
self.assertEqual(default_stream_groups[0].name, group_name)
|
|
||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
|
||||||
|
|
||||||
result = self.client_patch('/json/default_stream_groups',
|
|
||||||
{"group_name": group_name, "op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
|
||||||
self.assert_json_error(result, "Stream 'stream4' is already present in default stream group 'group1'")
|
|
||||||
|
|
||||||
# Test removing streams from default stream group
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
|
||||||
{"group_name": "dumbledore's army", "op": "remove",
|
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
|
||||||
self.assert_json_error(result, "Default stream group 'dumbledore's army' does not exist")
|
|
||||||
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
|
||||||
{"group_name": group_name, "op": "remove",
|
|
||||||
"stream_names": ujson.dumps(["random stream name"])})
|
|
||||||
self.assert_json_error(result, "Invalid stream name 'random stream name'")
|
|
||||||
|
|
||||||
streams.remove(new_streams[0])
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
|
||||||
{"group_name": group_name, "op": "remove",
|
|
||||||
"stream_names": ujson.dumps([new_stream_names[0]])})
|
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
self.assert_length(default_stream_groups, 1)
|
self.assert_length(default_stream_groups, 1)
|
||||||
self.assertEqual(default_stream_groups[0].name, group_name)
|
self.assertEqual(default_stream_groups[0].name, group_name)
|
||||||
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
||||||
|
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
{"group_name": group_name, "op": "remove",
|
{"op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
"stream_names": ujson.dumps(new_stream_names)})
|
self.assert_json_error(result, "Stream 'stream4' is already present in default stream group 'group1'")
|
||||||
|
|
||||||
|
# Test removing streams from default stream group
|
||||||
|
result = self.client_patch("/json/default_stream_groups/12345/streams",
|
||||||
|
{"op": "remove", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
|
self.assert_json_error(result, "Default stream group with id '12345' does not exist.")
|
||||||
|
|
||||||
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
|
{"op": "remove", "stream_names": ujson.dumps(["random stream name"])})
|
||||||
|
self.assert_json_error(result, "Invalid stream name 'random stream name'")
|
||||||
|
|
||||||
|
streams.remove(new_streams[0])
|
||||||
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
|
{"op": "remove", "stream_names": ujson.dumps([new_stream_names[0]])})
|
||||||
|
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, group_name)
|
||||||
|
self.assertEqual(list(default_stream_groups[0].streams.all()), streams)
|
||||||
|
|
||||||
|
result = self.client_patch("/json/default_stream_groups/{}/streams".format(group_id),
|
||||||
|
{"op": "remove", "stream_names": ujson.dumps(new_stream_names)})
|
||||||
self.assert_json_error(result, "Stream 'stream4' is not present in default stream group 'group1'")
|
self.assert_json_error(result, "Stream 'stream4' is not present in default stream group 'group1'")
|
||||||
|
|
||||||
# Test deleting a default stream group
|
# Test deleting a default stream group
|
||||||
result = self.client_delete('/json/default_stream_groups', {"group_name": group_name})
|
result = self.client_delete('/json/default_stream_groups/{}'.format(group_id))
|
||||||
self.assert_json_success(result)
|
self.assert_json_success(result)
|
||||||
default_stream_groups = get_default_stream_groups(realm)
|
default_stream_groups = get_default_stream_groups(realm)
|
||||||
self.assert_length(default_stream_groups, 0)
|
self.assert_length(default_stream_groups, 0)
|
||||||
|
|
||||||
do_remove_default_stream(new_stream)
|
result = self.client_delete('/json/default_stream_groups/{}'.format(group_id))
|
||||||
result = self.client_patch("/json/default_stream_groups",
|
self.assert_json_error(result, "Default stream group with id '{}' does not exist.".format(group_id))
|
||||||
{"group_name": group_name, "op": "add", "stream_names": ujson.dumps(new_stream_names)})
|
|
||||||
self.assert_json_error(result, "Default stream group 'group1' does not exist")
|
|
||||||
|
|
||||||
class SubscriptionPropertiesTest(ZulipTestCase):
|
class SubscriptionPropertiesTest(ZulipTestCase):
|
||||||
def test_set_stream_color(self):
|
def test_set_stream_color(self):
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from zerver.lib.actions import bulk_remove_subscriptions, \
|
|||||||
from zerver.lib.response import json_success, json_error, json_response
|
from zerver.lib.response import json_success, json_error, json_response
|
||||||
from zerver.lib.streams import access_stream_by_id, access_stream_by_name, \
|
from zerver.lib.streams import access_stream_by_id, access_stream_by_name, \
|
||||||
check_stream_name, check_stream_name_available, filter_stream_authorization, \
|
check_stream_name, check_stream_name_available, filter_stream_authorization, \
|
||||||
list_to_streams, access_stream_for_delete
|
list_to_streams, access_stream_for_delete, access_default_stream_group_by_id
|
||||||
from zerver.lib.validator import check_string, check_int, check_list, check_dict, \
|
from zerver.lib.validator import check_string, check_int, check_list, check_dict, \
|
||||||
check_bool, check_variable_type
|
check_bool, check_variable_type
|
||||||
from zerver.models import UserProfile, Stream, Realm, Subscription, \
|
from zerver.models import UserProfile, Stream, Realm, Subscription, \
|
||||||
@@ -88,26 +88,30 @@ def create_default_stream_group(request: HttpRequest, user_profile: UserProfile,
|
|||||||
|
|
||||||
@require_realm_admin
|
@require_realm_admin
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def update_default_stream_group(request: HttpRequest, user_profile: UserProfile,
|
@require_realm_admin
|
||||||
group_name: Text=REQ(), op: Text=REQ(),
|
@has_request_variables
|
||||||
|
def update_default_stream_group_streams(request: HttpRequest, user_profile: UserProfile,
|
||||||
|
group_id: int, op: Text=REQ(),
|
||||||
stream_names: List[Text]=REQ(validator=check_list(check_string))) -> None:
|
stream_names: List[Text]=REQ(validator=check_list(check_string))) -> None:
|
||||||
|
group = access_default_stream_group_by_id(user_profile.realm, group_id,)
|
||||||
streams = []
|
streams = []
|
||||||
for stream_name in stream_names:
|
for stream_name in stream_names:
|
||||||
(stream, recipient, sub) = access_stream_by_name(user_profile, stream_name)
|
(stream, recipient, sub) = access_stream_by_name(user_profile, stream_name)
|
||||||
streams.append(stream)
|
streams.append(stream)
|
||||||
|
|
||||||
if op == 'add':
|
if op == 'add':
|
||||||
do_add_streams_to_default_stream_group(user_profile.realm, group_name, streams)
|
do_add_streams_to_default_stream_group(user_profile.realm, group, streams)
|
||||||
elif op == 'remove':
|
elif op == 'remove':
|
||||||
do_remove_streams_from_default_stream_group(user_profile.realm, group_name, streams)
|
do_remove_streams_from_default_stream_group(user_profile.realm, group, streams)
|
||||||
else:
|
else:
|
||||||
return json_error(_('Nothing to do. Specify at least one of "add" or "remove".'))
|
return json_error(_('Invalid value for "op". Specify one of "add" or "remove".'))
|
||||||
return json_success()
|
return json_success()
|
||||||
|
|
||||||
@require_realm_admin
|
@require_realm_admin
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def remove_default_stream_group(request: HttpRequest, user_profile: UserProfile, group_name: Text=REQ()) -> None:
|
def remove_default_stream_group(request: HttpRequest, user_profile: UserProfile, group_id: int) -> None:
|
||||||
do_remove_default_stream_group(user_profile.realm, group_name)
|
group = access_default_stream_group_by_id(user_profile.realm, group_id)
|
||||||
|
do_remove_default_stream_group(user_profile.realm, group)
|
||||||
return json_success()
|
return json_success()
|
||||||
|
|
||||||
@require_realm_admin
|
@require_realm_admin
|
||||||
|
|||||||
@@ -283,10 +283,12 @@ v1_api_and_json_patterns = [
|
|||||||
url(r'^default_streams$', rest_dispatch,
|
url(r'^default_streams$', rest_dispatch,
|
||||||
{'POST': 'zerver.views.streams.add_default_stream',
|
{'POST': 'zerver.views.streams.add_default_stream',
|
||||||
'DELETE': 'zerver.views.streams.remove_default_stream'}),
|
'DELETE': 'zerver.views.streams.remove_default_stream'}),
|
||||||
url(r'^default_stream_groups', rest_dispatch,
|
url(r'^default_stream_groups/create$', rest_dispatch,
|
||||||
{'POST': 'zerver.views.streams.create_default_stream_group',
|
{'POST': 'zerver.views.streams.create_default_stream_group'}),
|
||||||
'PATCH': 'zerver.views.streams.update_default_stream_group',
|
url(r'^default_stream_groups/(?P<group_id>\d+)$', rest_dispatch,
|
||||||
'DELETE': 'zerver.views.streams.remove_default_stream_group'}),
|
{'DELETE': 'zerver.views.streams.remove_default_stream_group'}),
|
||||||
|
url(r'^default_stream_groups/(?P<group_id>\d+)/streams$', rest_dispatch,
|
||||||
|
{'PATCH': 'zerver.views.streams.update_default_stream_group_streams'}),
|
||||||
# GET lists your streams, POST bulk adds, PATCH bulk modifies/removes
|
# GET lists your streams, POST bulk adds, PATCH bulk modifies/removes
|
||||||
url(r'^users/me/subscriptions$', rest_dispatch,
|
url(r'^users/me/subscriptions$', rest_dispatch,
|
||||||
{'GET': 'zerver.views.streams.list_subscriptions_backend',
|
{'GET': 'zerver.views.streams.list_subscriptions_backend',
|
||||||
|
|||||||
Reference in New Issue
Block a user