decorator: Refactor @require_non_guest_human_user decorator.

Rename @require_non_guest_human_user to @require_member_or_admin.
This is a refactor commit prior to introduction of Administrator
Bots.
This commit is contained in:
Mohit Gupta
2019-06-18 20:13:22 +05:30
committed by Tim Abbott
parent 4818011199
commit db3d81613b
7 changed files with 18 additions and 19 deletions

View File

@@ -75,7 +75,7 @@ def stats(request: HttpRequest) -> HttpResponse:
realm = request.user.realm
if request.user.is_guest:
# TODO: Make @zulip_login_required pass the UserProfile so we
# can use @require_non_guest_human_user
# can use @require_member_or_admin
raise JsonableError(_("Not allowed for guest users"))
return render_stats(request, '', realm.name or realm.string_id)

View File

@@ -507,7 +507,7 @@ def require_non_guest_user(view_func: ViewFuncT) -> ViewFuncT:
return view_func(request, user_profile, *args, **kwargs)
return _wrapped_view_func # type: ignore # https://github.com/python/mypy/issues/1927
def require_non_guest_human_user(view_func: ViewFuncT) -> ViewFuncT:
def require_member_or_admin(view_func: ViewFuncT) -> ViewFuncT:
@wraps(view_func)
def _wrapped_view_func(request: HttpRequest, user_profile: UserProfile, *args: Any,
**kwargs: Any) -> HttpResponse:

View File

@@ -1569,7 +1569,7 @@ class TestRequireDecorators(ZulipTestCase):
result = self.common_subscribe_to_streams(guest_user.email, ["Denmark"])
self.assert_json_error(result, "Not allowed for guest users")
def test_require_non_guest_human_user_decorator(self) -> None:
def test_require_member_or_admin_decorator(self) -> None:
result = self.api_get("outgoing-webhook@zulip.com", '/api/v1/bots')
self.assert_json_error(result, "This endpoint does not accept bot requests.")

View File

@@ -2,7 +2,7 @@ from django.http import HttpRequest, HttpResponse
from django.utils.translation import ugettext as _
from typing import List, Optional, Set
from zerver.decorator import require_realm_admin, require_non_guest_human_user
from zerver.decorator import require_realm_admin, require_member_or_admin
from zerver.lib.actions import do_invite_users, do_revoke_user_invite, \
do_revoke_multi_use_invite, do_resend_user_invite_email, \
do_get_user_invites, do_create_multiuse_invite_link
@@ -14,7 +14,7 @@ from zerver.models import PreregistrationUser, Stream, UserProfile, MultiuseInvi
import re
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def invite_users_backend(request: HttpRequest, user_profile: UserProfile,
invitee_emails_raw: str=REQ("invitee_emails"),

View File

@@ -7,7 +7,7 @@ from zerver.lib.emoji import check_emoji_admin, check_valid_emoji_name
from zerver.lib.request import JsonableError, REQ, has_request_variables
from zerver.lib.response import json_success, json_error
from zerver.lib.actions import check_add_realm_emoji, do_remove_realm_emoji
from zerver.decorator import require_non_guest_human_user
from zerver.decorator import require_member_or_admin
def list_emoji(request: HttpRequest, user_profile: UserProfile) -> HttpResponse:
@@ -17,7 +17,7 @@ def list_emoji(request: HttpRequest, user_profile: UserProfile) -> HttpResponse:
return json_success({'emoji': user_profile.realm.get_emoji()})
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def upload_emoji(request: HttpRequest, user_profile: UserProfile,
emoji_name: str=REQ()) -> HttpResponse:

View File

@@ -3,7 +3,7 @@ from django.utils.translation import ugettext as _
from typing import List
from zerver.decorator import require_non_guest_human_user
from zerver.decorator import require_member_or_admin
from zerver.lib.actions import check_add_user_group, do_update_user_group_name, \
do_update_user_group_description, bulk_add_members_to_user_group, \
remove_members_from_user_group, check_delete_user_group
@@ -17,7 +17,7 @@ from zerver.lib.user_groups import access_user_group_by_id, get_memberships_of_u
from zerver.models import UserProfile
from zerver.views.streams import compose_views, FuncKwargPair
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def add_user_group(request: HttpRequest, user_profile: UserProfile,
name: str=REQ(),
@@ -27,13 +27,13 @@ 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
@require_member_or_admin
@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
@require_member_or_admin
@has_request_variables
def edit_user_group(request: HttpRequest, user_profile: UserProfile,
user_group_id: int=REQ(validator=check_int),
@@ -55,7 +55,7 @@ def edit_user_group(request: HttpRequest, user_profile: UserProfile,
return json_success(result)
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def delete_user_group(request: HttpRequest, user_profile: UserProfile,
user_group_id: int=REQ(validator=check_int)) -> HttpResponse:
@@ -63,7 +63,7 @@ def delete_user_group(request: HttpRequest, user_profile: UserProfile,
check_delete_user_group(user_group_id, user_profile)
return json_success()
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def update_user_group_backend(request: HttpRequest, user_profile: UserProfile,
user_group_id: int=REQ(validator=check_int),

View File

@@ -8,8 +8,7 @@ from django.utils.translation import ugettext as _
from django.shortcuts import redirect, render
from django.conf import settings
from zerver.decorator import require_realm_admin, \
require_non_guest_human_user
from zerver.decorator import require_realm_admin, require_member_or_admin
from zerver.forms import CreateUserForm
from zerver.lib.actions import do_change_avatar_fields, do_change_bot_owner, \
do_change_is_admin, do_change_default_all_public_streams, \
@@ -160,7 +159,7 @@ def get_stream_name(stream: Optional[Stream]) -> Optional[str]:
return stream.name
return None
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def patch_bot_backend(
request: HttpRequest, user_profile: UserProfile, bot_id: int,
@@ -245,7 +244,7 @@ def patch_bot_backend(
return json_success(json_result)
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def regenerate_bot_api_key(request: HttpRequest, user_profile: UserProfile, bot_id: int) -> HttpResponse:
bot = access_bot_by_id(user_profile, bot_id)
@@ -256,7 +255,7 @@ def regenerate_bot_api_key(request: HttpRequest, user_profile: UserProfile, bot_
)
return json_success(json_result)
@require_non_guest_human_user
@require_member_or_admin
@has_request_variables
def add_bot_backend(
request: HttpRequest, user_profile: UserProfile,
@@ -360,7 +359,7 @@ def add_bot_backend(
)
return json_success(json_result)
@require_non_guest_human_user
@require_member_or_admin
def get_bots_backend(request: HttpRequest, user_profile: UserProfile) -> HttpResponse:
bot_profiles = UserProfile.objects.filter(is_bot=True, is_active=True,
bot_owner=user_profile)