Refactor error_response function for improved argument handling
- Enhanced the `error_response` function to support backward compatibility by normalizing arguments when positional arguments are misused. - Updated various views to pass `None` for the `errors` parameter in `error_response` calls, ensuring consistent response formatting. - Adjusted logging in `ContentSyncService` and `WordPressClient` to use debug level for expected 401 errors, improving log clarity. - Removed deprecated fields from serializers and views, streamlining content management processes.
This commit is contained in:
@@ -5,6 +5,8 @@ Provides consistent response format across all endpoints
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
import uuid
|
||||
from typing import Any
|
||||
from django.http import HttpRequest
|
||||
|
||||
|
||||
def get_request_id(request):
|
||||
@@ -74,6 +76,28 @@ def error_response(error=None, errors=None, status_code=status.HTTP_400_BAD_REQU
|
||||
'success': False,
|
||||
}
|
||||
|
||||
# Backwards compatibility: some callers used positional args in the order
|
||||
# (error, status_code, request) which maps to (error, errors, status_code=request)
|
||||
# causing `status_code` to be a Request object and raising TypeError.
|
||||
# Detect this misuse and normalize arguments:
|
||||
try:
|
||||
if request is None and status_code is not None:
|
||||
# If status_code appears to be a Request object, shift arguments
|
||||
if isinstance(status_code, HttpRequest) or hasattr(status_code, 'META'):
|
||||
# original call looked like: error_response(msg, status.HTTP_400_BAD_REQUEST, request)
|
||||
# which resulted in: errors = status.HTTP_400..., status_code = request
|
||||
request = status_code
|
||||
# If `errors` holds an int-like HTTP status, use it as status_code
|
||||
if isinstance(errors, int):
|
||||
status_code = errors
|
||||
errors = None
|
||||
else:
|
||||
# fallback to default 400
|
||||
status_code = status.HTTP_400_BAD_REQUEST
|
||||
except Exception:
|
||||
# Defensive: if introspection fails, continue with provided args
|
||||
pass
|
||||
|
||||
if error:
|
||||
response_data['error'] = error
|
||||
elif status_code == status.HTTP_400_BAD_REQUEST:
|
||||
|
||||
Reference in New Issue
Block a user