def METHOD_NAME(func):
    @wraps(func)
    def _decorator(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except django.core.exceptions.PermissionDenied as e:
            # 403 Forbidden
            fault_code = HTTPStatus.FORBIDDEN
            fault_string = str(e)
        except django.db.models.ObjectDoesNotExist as e:
            # 404 Not Found
            fault_code = HTTPStatus.NOT_FOUND
            fault_string = str(e)
        except (
            django.core.exceptions.FieldDoesNotExist,
            django.core.exceptions.FieldError,
            django.core.exceptions.ValidationError,
            django.core.exceptions.MultipleObjectsReturned,
            django.forms.ValidationError,
            ValueError,
            TypeError,
        ) as e:
            # 400 Bad Request
            fault_code = HTTPStatus.BAD_REQUEST
            fault_string = str(e)
        except django.db.utils.IntegrityError as e:
            # 409 Duplicate
            fault_code = HTTPStatus.CONFLICT
            fault_string = str(e)
        except NotImplementedError as e:
            fault_code = HTTPStatus.NOT_IMPLEMENTED
            fault_string = str(e)
        except Exception as e:
            # 500 Server Error
            fault_code = HTTPStatus.INTERNAL_SERVER_ERROR
            fault_string = str(e)
        if settings.DEBUG:
            stack_trace = "".join(traceback.format_exception(*sys.exc_info()))
            fault_string = f"{fault_string}\n{stack_trace}"
        raise Fault(faultCode=fault_code, faultString=_format_message(fault_string))
    return _decorator