Compare commits

..

1 Commits

Author SHA1 Message Date
Jonathan Senecal
50da8797dd Merge c111c08315 into 970f2bd4ed 2025-12-09 17:34:58 +01:00
2 changed files with 5 additions and 14 deletions

View File

@@ -119,9 +119,7 @@ def process_event_rules(event_rules, object_type, event_type, data, username=Non
if snapshots:
params["snapshots"] = snapshots
if request:
# Exclude FILES - webhooks don't need uploaded files,
# which can cause pickle errors with Pillow.
params["request"] = copy_safe_request(request, include_files=False)
params["request"] = copy_safe_request(request)
# Enqueue the task
rq_queue.enqueue(

View File

@@ -35,34 +35,27 @@ class NetBoxFakeRequest:
# Utility functions
#
def copy_safe_request(request, include_files=True):
def copy_safe_request(request):
"""
Copy selected attributes from a request object into a new fake request object. This is needed in places where
thread safe pickling of the useful request data is needed.
Args:
request: The original request object
include_files: Whether to include request.FILES.
"""
meta = {
k: request.META[k]
for k in HTTP_REQUEST_META_SAFE_COPY
if k in request.META and isinstance(request.META[k], str)
}
data = {
return NetBoxFakeRequest({
'META': meta,
'COOKIES': request.COOKIES,
'POST': request.POST,
'GET': request.GET,
'FILES': request.FILES,
'user': request.user,
'method': request.method,
'path': request.path,
'id': getattr(request, 'id', None), # UUID assigned by middleware
}
if include_files:
data['FILES'] = request.FILES
return NetBoxFakeRequest(data)
})
def get_client_ip(request, additional_headers=()):