From 1b987b0803a25d51500af28926ef98004929813d Mon Sep 17 00:00:00 2001 From: Steve Howell Date: Tue, 28 Jan 2014 17:22:50 -0500 Subject: [PATCH] Add API for changing realm names. (imported from commit 4bc117ae2ca4acb8896b45cd7058556317287ef8) --- zerver/lib/actions.py | 1 + zerver/tests.py | 14 ++++++++++++++ zerver/views/__init__.py | 8 +++++++- zproject/urls.py | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index ee08588adf..547055423e 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -158,6 +158,7 @@ def do_set_realm_name(realm, name): value=name, ) send_event(event, active_user_ids(realm)) + return {} def get_realm_name(domain): realm = Realm.objects.get(domain=domain) diff --git a/zerver/tests.py b/zerver/tests.py index 4e31794e9c..0051465c74 100644 --- a/zerver/tests.py +++ b/zerver/tests.py @@ -329,6 +329,20 @@ class RealmTest(AuthedTestCase): value = new_name, )) + def test_realm_name_api(self): + new_name = 'Zulip: Worldwide Exporter of APIs' + + email = 'cordelia@zulip.com' + self.login(email) + user_profile = get_user_profile_by_email(email) + do_change_is_admin(user_profile, True) + + req = dict(name=ujson.dumps(new_name)) + result = self.client_patch('/json/realm', req) + self.assert_json_success(result) + realm = get_realm('zulip.com') + self.assertEqual(realm.name, new_name) + def test_do_deactivate_realm(self): # The main complicated thing about deactivating realm names is updating the # cache, and we start by populating the cache for Hamlet, and we end diff --git a/zerver/views/__init__.py b/zerver/views/__init__.py index ee9ca2b399..6021c1e669 100644 --- a/zerver/views/__init__.py +++ b/zerver/views/__init__.py @@ -30,7 +30,7 @@ from zerver.lib.actions import bulk_remove_subscriptions, do_change_password, \ create_stream_if_needed, gather_subscriptions, \ update_user_presence, bulk_add_subscriptions, do_events_register, \ get_status_dict, do_change_enable_offline_email_notifications, \ - do_change_enable_digest_emails, internal_prep_message, \ + do_change_enable_digest_emails, do_set_realm_name, internal_prep_message, \ do_send_messages, get_default_subs, do_deactivate_user, do_reactivate_user, \ user_email_is_unique, do_invite_users, do_refer_friend, compute_mit_user_fullname, \ do_add_alert_words, do_remove_alert_words, do_set_alert_words, get_subscriber_emails, \ @@ -1073,6 +1073,12 @@ def get_public_streams_backend(request, user_profile): return get_streams_backend(request, user_profile, include_public=True, include_subscribed=False, include_all_active=False) +@require_realm_admin +@has_request_variables +def update_realm(request, user_profile, name=REQ(validator=check_string, default=None)): + # This will grow, but for now it only handles changes to realm name. + return json_success(do_set_realm_name(user_profile.realm, name)) + @require_realm_admin @has_request_variables def add_default_stream(request, user_profile, stream_name=REQ): diff --git a/zproject/urls.py b/zproject/urls.py index 2070b61fdc..ad38ad6441 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -202,6 +202,8 @@ v1_api_and_json_patterns = patterns('zerver.views', url(r'^default_streams$', 'rest_dispatch', {'PATCH': 'add_default_stream', 'DELETE': 'remove_default_stream'}), + url(r'^realm$', 'rest_dispatch', + {'PATCH': 'update_realm'}), url(r'^users/me/api_key/regenerate$', 'rest_dispatch', {'POST': 'regenerate_api_key'}), url(r'^users/me/presence$', 'rest_dispatch',