From 8acdbef8aa7bf65c7b2c320c8616388dd38a154e Mon Sep 17 00:00:00 2001 From: anirudhjain75 Date: Fri, 23 Dec 2016 13:45:30 +0530 Subject: [PATCH] Eliminate legacy json/make_stream_public and json/make_stream_private URL Migrate from POST to PATCH --- static/js/subs.js | 12 ++++++------ zerver/tests/test_subs.py | 15 +++++++++------ zerver/views/streams.py | 24 +++++++----------------- zproject/legacy_urls.py | 2 -- 4 files changed, 22 insertions(+), 31 deletions(-) diff --git a/static/js/subs.js b/static/js/subs.js index 096efaa345..3b27af29a6 100644 --- a/static/js/subs.js +++ b/static/js/subs.js @@ -1270,17 +1270,17 @@ $(function () { stream_list.redraw_stream_privacy(sub.name); } - function change_stream_privacy(e, url, success_message, error_message, invite_only) { + function change_stream_privacy(e, is_private, success_message, error_message, invite_only) { e.preventDefault(); var stream_id = $(e.target).closest(".subscription_settings").attr("data-stream-id"); var sub = stream_data.get_sub_by_id(stream_id); $("#subscriptions-status").hide(); - var data = {stream_name: sub.name}; + var data = {stream_name: sub.name, is_private: is_private}; - channel.post({ - url: url, + channel.patch({ + url: "/json/streams/" + sub.name, data: data, success: function () { sub = stream_data.get_sub_by_id(stream_id); @@ -1302,7 +1302,7 @@ $(function () { $("#subscriptions_table").on("click", ".make-stream-public-button", function (e) { change_stream_privacy( e, - "/json/make_stream_public", + false, "The stream has been made public!", "Error making stream public", false @@ -1312,7 +1312,7 @@ $(function () { $("#subscriptions_table").on("click", ".make-stream-private-button", function (e) { change_stream_privacy( e, - "/json/make_stream_private", + true, "The stream has been made private!", "Error making stream private", true diff --git a/zerver/tests/test_subs.py b/zerver/tests/test_subs.py index 6857b6a80a..958045f1cd 100644 --- a/zerver/tests/test_subs.py +++ b/zerver/tests/test_subs.py @@ -117,18 +117,20 @@ class StreamAdminTest(ZulipTestCase): do_change_is_admin(user_profile, True) params = { - 'stream_name': 'private_stream' + 'stream_name': ujson.dumps('private_stream'), + 'is_private': ujson.dumps(False) } - result = self.client_post("/json/make_stream_public", params) + result = self.client_patch("/json/streams/private_stream", params) self.assert_json_error(result, 'You are not invited to this stream.') self.subscribe_to_stream(email, 'private_stream') do_change_is_admin(user_profile, True) params = { - 'stream_name': 'private_stream' + 'stream_name': ujson.dumps('private_stream'), + 'is_private': ujson.dumps(False) } - result = self.client_post("/json/make_stream_public", params) + result = self.client_patch("/json/streams/private_stream", params) self.assert_json_success(result) realm = user_profile.realm @@ -145,9 +147,10 @@ class StreamAdminTest(ZulipTestCase): do_change_is_admin(user_profile, True) params = { - 'stream_name': 'public_stream' + 'stream_name': ujson.dumps('public_stream'), + 'is_private': ujson.dumps(True) } - result = self.client_post("/json/make_stream_private", params) + result = self.client_patch("/json/streams/public_stream", params) self.assert_json_success(result) stream = Stream.objects.get(name='public_stream', realm=realm) self.assertTrue(stream.invite_only) diff --git a/zerver/views/streams.py b/zerver/views/streams.py index 947a0f8896..2b2eef30ea 100644 --- a/zerver/views/streams.py +++ b/zerver/views/streams.py @@ -158,32 +158,22 @@ def remove_default_stream(request, user_profile, stream_name=REQ()): do_remove_default_stream(user_profile.realm, stream_name) return json_success() -@authenticated_json_post_view -@require_realm_admin -@has_request_variables -def json_make_stream_public(request, user_profile, stream_name=REQ()): - # type: (HttpRequest, UserProfile, text_type) -> HttpResponse - do_make_stream_public(user_profile, user_profile.realm, stream_name) - return json_success() - -@authenticated_json_post_view -@require_realm_admin -@has_request_variables -def json_make_stream_private(request, user_profile, stream_name=REQ()): - # type: (HttpRequest, UserProfile, text_type) -> HttpResponse - do_make_stream_private(user_profile.realm, stream_name) - return json_success() - @require_realm_admin @has_request_variables def update_stream_backend(request, user_profile, stream_name, description=REQ(validator=check_string, default=None), + is_private=REQ(validator=check_bool, default=None), new_name=REQ(validator=check_string, default=None)): - # type: (HttpRequest, UserProfile, text_type, Optional[text_type], Optional[text_type]) -> HttpResponse + # type: (HttpRequest, UserProfile, text_type, Optional[text_type], Optional[bool], Optional[text_type]) -> HttpResponse if description is not None: do_change_stream_description(user_profile.realm, stream_name, description) if stream_name is not None and new_name is not None: do_rename_stream(user_profile.realm, stream_name, new_name) + if is_private is not None: + if is_private: + do_make_stream_private(user_profile.realm, stream_name) + else: + do_make_stream_public(user_profile, user_profile.realm, stream_name) return json_success() def list_subscriptions_backend(request, user_profile): diff --git a/zproject/legacy_urls.py b/zproject/legacy_urls.py index 2274e3eea1..be3e93bfa8 100644 --- a/zproject/legacy_urls.py +++ b/zproject/legacy_urls.py @@ -13,8 +13,6 @@ import zerver.views.messages legacy_urls = [ # These are json format views used by the web client. They require a logged in browser. - url(r'^json/make_stream_public$', zerver.views.streams.json_make_stream_public), - url(r'^json/make_stream_private$', zerver.views.streams.json_make_stream_private), url(r'^json/invite_users$', zerver.views.invite.json_invite_users), url(r'^json/bulk_invite_users$', zerver.views.invite.json_bulk_invite_users), url(r'^json/refer_friend$', zerver.views.invite.json_refer_friend),