diff --git a/zerver/tests/test_user_groups.py b/zerver/tests/test_user_groups.py index 1d86b025b4..df6c3db679 100644 --- a/zerver/tests/test_user_groups.py +++ b/zerver/tests/test_user_groups.py @@ -117,6 +117,14 @@ class UserGroupAPITestCase(ZulipTestCase): self.assert_json_error(result, "User group 'support' already exists.") self.assert_length(UserGroup.objects.all(), 2) + def test_user_group_get(self) -> None: + # Test success + user_profile = self.example_user('hamlet') + self.login(user_profile.email) + result = self.client_get('/json/user_groups') + self.assert_json_success(result) + self.assert_length(result.json()['user_groups'], UserGroup.objects.filter(realm=user_profile.realm).count()) + def test_user_group_create_by_guest_user(self) -> None: guest_user = self.example_user('polonius') diff --git a/zerver/views/user_groups.py b/zerver/views/user_groups.py index 88a9a8f8bc..8c9de99b1f 100644 --- a/zerver/views/user_groups.py +++ b/zerver/views/user_groups.py @@ -14,7 +14,8 @@ from zerver.lib.response import json_success, json_error from zerver.lib.users import user_ids_to_users from zerver.lib.validator import check_list, check_string, check_int, \ check_short_string -from zerver.lib.user_groups import access_user_group_by_id, get_memberships_of_users, get_user_group_members +from zerver.lib.user_groups import access_user_group_by_id, get_memberships_of_users, \ + get_user_group_members, user_groups_in_realm_serialized from zerver.models import UserProfile, UserGroup, UserGroupMembership from zerver.views.streams import compose_views, FuncKwargPair @@ -28,6 +29,12 @@ def add_user_group(request: HttpRequest, user_profile: UserProfile, check_add_user_group(user_profile.realm, name, user_profiles, description) return json_success() +@require_non_guest_human_user +@has_request_variables +def get_user_group(request: HttpRequest, user_profile: UserProfile) -> HttpResponse: + user_groups = user_groups_in_realm_serialized(user_profile.realm) + return json_success({"user_groups": user_groups}) + @require_non_guest_human_user @has_request_variables def edit_user_group(request: HttpRequest, user_profile: UserProfile, diff --git a/zproject/urls.py b/zproject/urls.py index fc1a284a54..5909adf332 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -251,6 +251,8 @@ v1_api_and_json_patterns = [ 'DELETE': 'zerver.views.push_notifications.remove_android_reg_id'}), # user_groups -> zerver.views.user_groups + url(r'^user_groups$', rest_dispatch, + {'GET': 'zerver.views.user_groups.get_user_group'}), url(r'^user_groups/create$', rest_dispatch, {'POST': 'zerver.views.user_groups.add_user_group'}), url(r'^user_groups/(?P\d+)$', rest_dispatch,