summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJon Janzen <jon@jonjanzen.com>2023-03-22 02:21:04 -0700
committerGitHub <noreply@github.com>2023-03-22 10:21:04 +0100
commit23cbed21876bf02f4600c0dac3a5277db5b2afbb (patch)
treed0046e9b5930842d4b647129b479c5fd0d7c2677 /django
parent6087bc4e15e89d968396807f8485f4b5624c4f03 (diff)
downloaddjango-23cbed21876bf02f4600c0dac3a5277db5b2afbb.tar.gz
Refs #31949 -- Enabled @sensitive_variables to work with async functions.
Diffstat (limited to 'django')
-rw-r--r--django/views/decorators/debug.py72
1 files changed, 52 insertions, 20 deletions
diff --git a/django/views/decorators/debug.py b/django/views/decorators/debug.py
index 5578a4995f..3f68d4a7e5 100644
--- a/django/views/decorators/debug.py
+++ b/django/views/decorators/debug.py
@@ -1,5 +1,7 @@
from functools import wraps
+from asgiref.sync import iscoroutinefunction
+
from django.http import HttpRequest
@@ -33,13 +35,25 @@ def sensitive_variables(*variables):
)
def decorator(func):
- @wraps(func)
- def sensitive_variables_wrapper(*func_args, **func_kwargs):
- if variables:
- sensitive_variables_wrapper.sensitive_variables = variables
- else:
- sensitive_variables_wrapper.sensitive_variables = "__ALL__"
- return func(*func_args, **func_kwargs)
+ if iscoroutinefunction(func):
+
+ @wraps(func)
+ async def sensitive_variables_wrapper(*func_args, **func_kwargs):
+ if variables:
+ sensitive_variables_wrapper.sensitive_variables = variables
+ else:
+ sensitive_variables_wrapper.sensitive_variables = "__ALL__"
+ return await func(*func_args, **func_kwargs)
+
+ else:
+
+ @wraps(func)
+ def sensitive_variables_wrapper(*func_args, **func_kwargs):
+ if variables:
+ sensitive_variables_wrapper.sensitive_variables = variables
+ else:
+ sensitive_variables_wrapper.sensitive_variables = "__ALL__"
+ return func(*func_args, **func_kwargs)
return sensitive_variables_wrapper
@@ -77,19 +91,37 @@ def sensitive_post_parameters(*parameters):
)
def decorator(view):
- @wraps(view)
- def sensitive_post_parameters_wrapper(request, *args, **kwargs):
- if not isinstance(request, HttpRequest):
- raise TypeError(
- "sensitive_post_parameters didn't receive an HttpRequest "
- "object. If you are decorating a classmethod, make sure "
- "to use @method_decorator."
- )
- if parameters:
- request.sensitive_post_parameters = parameters
- else:
- request.sensitive_post_parameters = "__ALL__"
- return view(request, *args, **kwargs)
+ if iscoroutinefunction(view):
+
+ @wraps(view)
+ async def sensitive_post_parameters_wrapper(request, *args, **kwargs):
+ if not isinstance(request, HttpRequest):
+ raise TypeError(
+ "sensitive_post_parameters didn't receive an HttpRequest "
+ "object. If you are decorating a classmethod, make sure "
+ "to use @method_decorator."
+ )
+ if parameters:
+ request.sensitive_post_parameters = parameters
+ else:
+ request.sensitive_post_parameters = "__ALL__"
+ return await view(request, *args, **kwargs)
+
+ else:
+
+ @wraps(view)
+ def sensitive_post_parameters_wrapper(request, *args, **kwargs):
+ if not isinstance(request, HttpRequest):
+ raise TypeError(
+ "sensitive_post_parameters didn't receive an HttpRequest "
+ "object. If you are decorating a classmethod, make sure "
+ "to use @method_decorator."
+ )
+ if parameters:
+ request.sensitive_post_parameters = parameters
+ else:
+ request.sensitive_post_parameters = "__ALL__"
+ return view(request, *args, **kwargs)
return sensitive_post_parameters_wrapper