@@ -508,7 +508,8 @@ def _wrapped_view_func(
508
508
request : HttpRequest , / , * args : ParamT .args , ** kwargs : ParamT .kwargs
509
509
) -> HttpResponse :
510
510
process_client (request , request .user , is_browser_view = True , query = view_func .__name__ )
511
- return rate_limit (view_func )(request , * args , ** kwargs )
511
+ rate_limit (request )
512
+ return view_func (request , * args , ** kwargs )
512
513
513
514
return _wrapped_view_func
514
515
@@ -681,10 +682,8 @@ def _wrapped_func_arguments(
681
682
) -> HttpResponse :
682
683
user_profile = validate_api_key (request , None , api_key , False )
683
684
if not skip_rate_limiting :
684
- limited_func = rate_limit (view_func )
685
- else :
686
- limited_func = view_func
687
- return limited_func (request , user_profile , * args , ** kwargs )
685
+ rate_limit (request )
686
+ return view_func (request , user_profile , * args , ** kwargs )
688
687
689
688
return _wrapped_func_arguments
690
689
@@ -745,10 +744,8 @@ def _wrapped_func_arguments(
745
744
try :
746
745
if not skip_rate_limiting :
747
746
# Apply rate limiting
748
- target_view_func = rate_limit (view_func )
749
- else :
750
- target_view_func = view_func
751
- return target_view_func (request , profile , * args , ** kwargs )
747
+ rate_limit (request )
748
+ return view_func (request , profile , * args , ** kwargs )
752
749
except Exception as err :
753
750
if not webhook_client_name :
754
751
raise err
@@ -822,9 +819,7 @@ def authenticate_log_and_execute_json(
822
819
** kwargs : object ,
823
820
) -> HttpResponse :
824
821
if not skip_rate_limiting :
825
- limited_view_func = rate_limit (view_func )
826
- else :
827
- limited_view_func = view_func
822
+ rate_limit (request )
828
823
829
824
if not request .user .is_authenticated :
830
825
if not allow_unauthenticated :
@@ -835,7 +830,7 @@ def authenticate_log_and_execute_json(
835
830
is_browser_view = True ,
836
831
query = view_func .__name__ ,
837
832
)
838
- return limited_view_func (request , request .user , * args , ** kwargs )
833
+ return view_func (request , request .user , * args , ** kwargs )
839
834
840
835
user_profile = request .user
841
836
validate_account_and_subdomain (request , user_profile )
@@ -844,7 +839,7 @@ def authenticate_log_and_execute_json(
844
839
raise JsonableError (_ ("Webhook bots can only access webhooks" ))
845
840
846
841
process_client (request , user_profile , is_browser_view = True , query = view_func .__name__ )
847
- return limited_view_func (request , user_profile , * args , ** kwargs )
842
+ return view_func (request , user_profile , * args , ** kwargs )
848
843
849
844
850
845
# Checks if the user is logged in. If not, return an error (the
@@ -1027,36 +1022,22 @@ def rate_limit_remote_server(
1027
1022
raise e
1028
1023
1029
1024
1030
- def rate_limit (func : ViewFuncT ) -> ViewFuncT :
1031
- """Rate-limits a view."""
1032
-
1033
- @wraps (func )
1034
- def wrapped_func (request : HttpRequest , * args : object , ** kwargs : object ) -> HttpResponse :
1035
-
1036
- # It is really tempting to not even wrap our original function
1037
- # when settings.RATE_LIMITING is False, but it would make
1038
- # for awkward unit testing in some situations.
1039
- if not settings .RATE_LIMITING :
1040
- return func (request , * args , ** kwargs )
1041
-
1042
- if client_is_exempt_from_rate_limiting (request ):
1043
- return func (request , * args , ** kwargs )
1044
-
1045
- user = request .user
1046
- remote_server = RequestNotes .get_notes (request ).remote_server
1025
+ def rate_limit (request : HttpRequest ) -> None :
1026
+ if not settings .RATE_LIMITING :
1027
+ return
1047
1028
1048
- if settings .ZILENCER_ENABLED and remote_server is not None :
1049
- rate_limit_remote_server (request , remote_server , domain = "api_by_remote_server" )
1050
- elif not user .is_authenticated :
1051
- rate_limit_request_by_ip (request , domain = "api_by_ip" )
1052
- return func (request , * args , ** kwargs )
1053
- else :
1054
- assert isinstance (user , UserProfile )
1055
- rate_limit_user (request , user , domain = "api_by_user" )
1029
+ if client_is_exempt_from_rate_limiting (request ):
1030
+ return
1056
1031
1057
- return func (request , * args , ** kwargs )
1032
+ remote_server = RequestNotes . get_notes (request ). remote_server
1058
1033
1059
- return cast (ViewFuncT , wrapped_func ) # https://github.com/python/mypy/issues/1927
1034
+ if settings .ZILENCER_ENABLED and remote_server is not None :
1035
+ rate_limit_remote_server (request , remote_server , domain = "api_by_remote_server" )
1036
+ elif not request .user .is_authenticated :
1037
+ rate_limit_request_by_ip (request , domain = "api_by_ip" )
1038
+ else :
1039
+ assert isinstance (request .user , UserProfile )
1040
+ rate_limit_user (request , request .user , domain = "api_by_user" )
1060
1041
1061
1042
1062
1043
def return_success_on_head_request (
0 commit comments