from rest_framework.views import exception_handler


def custom_exception_handler(exc, context):
    """Uniform error response shape — renderer handles wrapping."""
    response = exception_handler(exc, context)

    if response is not None:
        # Flatten DRF's error format so the renderer can process it
        data = response.data

        # Extract a human-readable message
        if isinstance(data, dict):
            detail = data.get("detail")
            if detail:
                data["_message"] = str(detail)
        elif isinstance(data, list):
            data = {"_message": "error", "errors": data}
            response.data = data

    return response
