From 8aaf1cf8c2aa1dbd3d0c972fb3dc85ea079666f5 Mon Sep 17 00:00:00 2001 From: Steve Howell Date: Mon, 27 Jan 2014 15:56:09 -0500 Subject: [PATCH] Add API for removing default streams from a realm. (imported from commit 06433126e31b372dff8a23eb8bbea14515138c85) --- zerver/lib/actions.py | 1 + zerver/tests.py | 5 +++++ zerver/views/__init__.py | 7 ++++++- zproject/urls.py | 3 ++- 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index edced0d68e..97b8266759 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -1383,6 +1383,7 @@ def do_add_default_stream(realm, stream_name): def do_remove_default_stream(realm, stream_name): DefaultStream.objects.filter(realm=realm, stream__name=stream_name).delete() + return {} def get_default_streams_for_realm(realm): return [default.stream for default in diff --git a/zerver/tests.py b/zerver/tests.py index 14ff8e772c..e9fbc52721 100644 --- a/zerver/tests.py +++ b/zerver/tests.py @@ -1053,6 +1053,11 @@ class DefaultStreamTest(AuthedTestCase): self.assert_json_success(result) self.assertTrue(stream_name in self.get_default_stream_names(user_profile.realm)) + # and remove it + result = self.client_delete('/json/default_streams', dict(stream_name=stream_name)) + self.assert_json_success(result) + self.assertFalse(stream_name in self.get_default_stream_names(user_profile.realm)) + class LoginTest(AuthedTestCase): """ Logging in, registration, and logging out. diff --git a/zerver/views/__init__.py b/zerver/views/__init__.py index 4d5dbacef1..6cbd70a0e7 100644 --- a/zerver/views/__init__.py +++ b/zerver/views/__init__.py @@ -38,7 +38,7 @@ from zerver.lib.actions import bulk_remove_subscriptions, do_change_password, \ notify_for_streams_by_default, do_change_enable_offline_push_notifications, \ do_deactivate_stream, do_change_autoscroll_forever, do_make_stream_public, \ do_make_stream_private, do_change_default_desktop_notifications, \ - do_change_stream_description, do_update_pointer, do_add_default_stream + do_change_stream_description, do_update_pointer, do_add_default_stream, do_remove_default_stream from zerver.lib.create_user import random_api_key from zerver.lib.push_notifications import num_push_devices_for_user from zerver.forms import RegistrationForm, HomepageForm, ToSForm, \ @@ -1078,6 +1078,11 @@ def get_public_streams_backend(request, user_profile): def add_default_stream(request, user_profile, stream_name=REQ): return json_success(do_add_default_stream(user_profile.realm, stream_name)) +@require_realm_admin +@has_request_variables +def remove_default_stream(request, user_profile, stream_name=REQ): + return json_success(do_remove_default_stream(user_profile.realm, stream_name)) + @authenticated_json_post_view @require_realm_admin @has_request_variables diff --git a/zproject/urls.py b/zproject/urls.py index 0dccac77c7..2070b61fdc 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -200,7 +200,8 @@ v1_api_and_json_patterns = patterns('zerver.views', 'PATCH': 'add_alert_words', 'DELETE': 'remove_alert_words'}), url(r'^default_streams$', 'rest_dispatch', - {'PATCH': 'add_default_stream'}), + {'PATCH': 'add_default_stream', + 'DELETE': 'remove_default_stream'}), url(r'^users/me/api_key/regenerate$', 'rest_dispatch', {'POST': 'regenerate_api_key'}), url(r'^users/me/presence$', 'rest_dispatch',