@@ -532,7 +532,8 @@ def _wrapped_view_func(
532
532
request : HttpRequest , / , * args : ParamT .args , ** kwargs : ParamT .kwargs
533
533
) -> HttpResponse :
534
534
process_client (request , request .user , is_browser_view = True , query = view_func .__name__ )
535
- return rate_limit (view_func )(request , * args , ** kwargs )
535
+ rate_limit (request )
536
+ return view_func (request , * args , ** kwargs )
536
537
537
538
return _wrapped_view_func
538
539
@@ -723,10 +724,8 @@ def _wrapped_func_arguments(
723
724
) -> HttpResponse :
724
725
user_profile = validate_api_key (request , None , api_key , False )
725
726
if not skip_rate_limiting :
726
- limited_func = rate_limit (view_func )
727
- else :
728
- limited_func = view_func
729
- return limited_func (request , user_profile , * args , ** kwargs )
727
+ rate_limit (request )
728
+ return view_func (request , user_profile , * args , ** kwargs )
730
729
731
730
return _wrapped_func_arguments
732
731
@@ -787,10 +786,8 @@ def _wrapped_func_arguments(
787
786
try :
788
787
if not skip_rate_limiting :
789
788
# Apply rate limiting
790
- target_view_func = rate_limit (view_func )
791
- else :
792
- target_view_func = view_func
793
- return target_view_func (request , profile , * args , ** kwargs )
789
+ rate_limit (request )
790
+ return view_func (request , profile , * args , ** kwargs )
794
791
except Exception as err :
795
792
if not webhook_client_name :
796
793
raise err
@@ -864,9 +861,7 @@ def authenticate_log_and_execute_json(
864
861
** kwargs : object ,
865
862
) -> HttpResponse :
866
863
if not skip_rate_limiting :
867
- limited_view_func = rate_limit (view_func )
868
- else :
869
- limited_view_func = view_func
864
+ rate_limit (request )
870
865
871
866
if not request .user .is_authenticated :
872
867
if not allow_unauthenticated :
@@ -877,7 +872,7 @@ def authenticate_log_and_execute_json(
877
872
is_browser_view = True ,
878
873
query = view_func .__name__ ,
879
874
)
880
- return limited_view_func (request , request .user , * args , ** kwargs )
875
+ return view_func (request , request .user , * args , ** kwargs )
881
876
882
877
user_profile = request .user
883
878
validate_account_and_subdomain (request , user_profile )
@@ -886,7 +881,7 @@ def authenticate_log_and_execute_json(
886
881
raise JsonableError (_ ("Webhook bots can only access webhooks" ))
887
882
888
883
process_client (request , user_profile , is_browser_view = True , query = view_func .__name__ )
889
- return limited_view_func (request , user_profile , * args , ** kwargs )
884
+ return view_func (request , user_profile , * args , ** kwargs )
890
885
891
886
892
887
# Checks if the user is logged in. If not, return an error (the
@@ -1069,36 +1064,23 @@ def rate_limit_remote_server(
1069
1064
raise e
1070
1065
1071
1066
1072
- def rate_limit (func : ViewFuncT ) -> ViewFuncT :
1073
- """Rate-limits a view."""
1074
-
1075
- @wraps (func )
1076
- def wrapped_func (request : HttpRequest , * args : object , ** kwargs : object ) -> HttpResponse :
1077
-
1078
- # It is really tempting to not even wrap our original function
1079
- # when settings.RATE_LIMITING is False, but it would make
1080
- # for awkward unit testing in some situations.
1081
- if not settings .RATE_LIMITING :
1082
- return func (request , * args , ** kwargs )
1083
-
1084
- if client_is_exempt_from_rate_limiting (request ):
1085
- return func (request , * args , ** kwargs )
1086
-
1087
- user = request .user
1088
- remote_server = RequestNotes .get_notes (request ).remote_server
1067
+ def rate_limit (request : HttpRequest ) -> None :
1068
+ if not settings .RATE_LIMITING :
1069
+ return
1089
1070
1090
- if settings .ZILENCER_ENABLED and remote_server is not None :
1091
- rate_limit_remote_server (request , remote_server , domain = "api_by_remote_server" )
1092
- elif not user .is_authenticated :
1093
- rate_limit_request_by_ip (request , domain = "api_by_ip" )
1094
- return func (request , * args , ** kwargs )
1095
- else :
1096
- assert isinstance (user , UserProfile )
1097
- rate_limit_user (request , user , domain = "api_by_user" )
1071
+ if client_is_exempt_from_rate_limiting (request ):
1072
+ return
1098
1073
1099
- return func (request , * args , ** kwargs )
1074
+ user = request .user
1075
+ remote_server = RequestNotes .get_notes (request ).remote_server
1100
1076
1101
- return cast (ViewFuncT , wrapped_func ) # https://github.com/python/mypy/issues/1927
1077
+ if settings .ZILENCER_ENABLED and remote_server is not None :
1078
+ rate_limit_remote_server (request , remote_server , domain = "api_by_remote_server" )
1079
+ elif not user .is_authenticated :
1080
+ rate_limit_request_by_ip (request , domain = "api_by_ip" )
1081
+ else :
1082
+ assert isinstance (user , UserProfile )
1083
+ rate_limit_user (request , user , domain = "api_by_user" )
1102
1084
1103
1085
1104
1086
def return_success_on_head_request (
0 commit comments