mirror of
https://github.com/zulip/zulip.git
synced 2025-10-27 01:53:59 +00:00
decorator: Refactor require_server_admin_api with ParamSpec.
Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
committed by
Tim Abbott
parent
9f2dfd848f
commit
95394de186
@@ -124,7 +124,7 @@ def stats_for_remote_realm(
|
|||||||
@require_server_admin_api
|
@require_server_admin_api
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def get_chart_data_for_realm(
|
def get_chart_data_for_realm(
|
||||||
request: HttpRequest, user_profile: UserProfile, realm_str: str, **kwargs: Any
|
request: HttpRequest, /, user_profile: UserProfile, realm_str: str, **kwargs: Any
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
try:
|
try:
|
||||||
realm = get_realm(realm_str)
|
realm = get_realm(realm_str)
|
||||||
@@ -138,6 +138,7 @@ def get_chart_data_for_realm(
|
|||||||
@has_request_variables
|
@has_request_variables
|
||||||
def get_chart_data_for_remote_realm(
|
def get_chart_data_for_remote_realm(
|
||||||
request: HttpRequest,
|
request: HttpRequest,
|
||||||
|
/,
|
||||||
user_profile: UserProfile,
|
user_profile: UserProfile,
|
||||||
remote_server_id: int,
|
remote_server_id: int,
|
||||||
remote_realm_id: int,
|
remote_realm_id: int,
|
||||||
@@ -176,7 +177,7 @@ def stats_for_remote_installation(request: HttpRequest, remote_server_id: int) -
|
|||||||
@require_server_admin_api
|
@require_server_admin_api
|
||||||
@has_request_variables
|
@has_request_variables
|
||||||
def get_chart_data_for_installation(
|
def get_chart_data_for_installation(
|
||||||
request: HttpRequest, user_profile: UserProfile, chart_name: str = REQ(), **kwargs: Any
|
request: HttpRequest, /, user_profile: UserProfile, chart_name: str = REQ(), **kwargs: Any
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
return get_chart_data(
|
return get_chart_data(
|
||||||
request=request, user_profile=user_profile, for_installation=True, **kwargs
|
request=request, user_profile=user_profile, for_installation=True, **kwargs
|
||||||
@@ -187,6 +188,7 @@ def get_chart_data_for_installation(
|
|||||||
@has_request_variables
|
@has_request_variables
|
||||||
def get_chart_data_for_remote_installation(
|
def get_chart_data_for_remote_installation(
|
||||||
request: HttpRequest,
|
request: HttpRequest,
|
||||||
|
/,
|
||||||
user_profile: UserProfile,
|
user_profile: UserProfile,
|
||||||
remote_server_id: int,
|
remote_server_id: int,
|
||||||
chart_name: str = REQ(),
|
chart_name: str = REQ(),
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ from django.utils.translation import gettext as _
|
|||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django_otp import user_has_device
|
from django_otp import user_has_device
|
||||||
from two_factor.utils import default_device
|
from two_factor.utils import default_device
|
||||||
from typing_extensions import ParamSpec
|
from typing_extensions import Concatenate, ParamSpec
|
||||||
|
|
||||||
from zerver.lib.cache import cache_with_key
|
from zerver.lib.cache import cache_with_key
|
||||||
from zerver.lib.exceptions import (
|
from zerver.lib.exceptions import (
|
||||||
@@ -572,17 +572,22 @@ def require_server_admin(view_func: ViewFuncT) -> ViewFuncT:
|
|||||||
return cast(ViewFuncT, _wrapped_view_func) # https://github.com/python/mypy/issues/1927
|
return cast(ViewFuncT, _wrapped_view_func) # https://github.com/python/mypy/issues/1927
|
||||||
|
|
||||||
|
|
||||||
def require_server_admin_api(view_func: ViewFuncT) -> ViewFuncT:
|
def require_server_admin_api(
|
||||||
|
view_func: Callable[Concatenate[HttpRequest, ParamT], HttpResponse]
|
||||||
|
) -> Callable[Concatenate[HttpRequest, ParamT], HttpResponse]:
|
||||||
@zulip_login_required
|
@zulip_login_required
|
||||||
@wraps(view_func)
|
@wraps(view_func)
|
||||||
def _wrapped_view_func(
|
def _wrapped_view_func(
|
||||||
request: HttpRequest, user_profile: UserProfile, *args: object, **kwargs: object
|
request: HttpRequest,
|
||||||
|
/,
|
||||||
|
*args: ParamT.args,
|
||||||
|
**kwargs: ParamT.kwargs,
|
||||||
) -> HttpResponse:
|
) -> HttpResponse:
|
||||||
if not user_profile.is_staff:
|
if not request.user.is_staff:
|
||||||
raise JsonableError(_("Must be an server administrator"))
|
raise JsonableError(_("Must be an server administrator"))
|
||||||
return view_func(request, user_profile, *args, **kwargs)
|
return view_func(request, *args, **kwargs)
|
||||||
|
|
||||||
return cast(ViewFuncT, _wrapped_view_func) # https://github.com/python/mypy/issues/1927
|
return _wrapped_view_func
|
||||||
|
|
||||||
|
|
||||||
def require_non_guest_user(view_func: ViewFuncT) -> ViewFuncT:
|
def require_non_guest_user(view_func: ViewFuncT) -> ViewFuncT:
|
||||||
|
|||||||
Reference in New Issue
Block a user