Skip to content

Commit

Permalink
Fix django wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
bitterpanda63 committed Feb 27, 2025
1 parent c8b0376 commit 3bb2d4a
Showing 1 changed file with 18 additions and 13 deletions.
31 changes: 18 additions & 13 deletions aikido_zen/sources/django/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,8 @@
from ... import logger


@importhook.on_import("django.core.handlers.base")
def django_get_response_instrumentation(django):
if not pkg_compat_check("django", required_version=ANY_VERSION):
return django

modified_django = importhook.copy_module(django)
get_response_original = copy.deepcopy(django.BaseHandler.get_response)

def get_response_modified(self, request):
def get_response_decorator(func):
def wrapper(self, request):
try:
# Check if the request is blocked (e.g. geo restrictions, bot blocking, ...)
block_result = on_init_handler(create_context(request))
Expand All @@ -36,15 +29,27 @@ def get_response_modified(self, request):
)

# Get response and report status code for route discovery, api specs, ...
res = get_response_original(self, request)
res = func(self, request)
if hasattr(res, "status_code"):
on_post_request_handler(status_code=res.status_code)
return res

# pylint: disable=no-member
setattr(modified_django.BaseHandler, "get_response", get_response_modified)
setattr(django.BaseHandler, "get_response", get_response_modified)
return wrapper


@importhook.on_import("django.core.handlers.base")
def django_get_response_instrumentation(django):
if not pkg_compat_check("django", required_version=ANY_VERSION):
return django

modified_django = importhook.copy_module(django)

# pylint: disable=no-member
setattr(
modified_django.BaseHandler,
"get_response",
get_response_decorator(django.BaseHandler.get_response),
)
return modified_django


Expand Down

0 comments on commit 3bb2d4a

Please sign in to comment.