Пример #1
0
 def dispatch_request(self, *args, **kwargs):
     self._check_authorization()
     mimetype = serializers.get_mimetype(flask.request)
     result = super(RestController, self).dispatch_request(
         *args, **self._modify_request_kwargs(kwargs, mimetype))
     result, status_code, settings = self._get_controller_result(result)
     return self._generate_response(result, status_code, settings, mimetype)
Пример #2
0
def inner_error_handler(exc):
    """
    Serialize exceptions in rest response.

    :param exc: raised exception
    :return: exception response
    """
    mimetype = serializers.get_mimetype(request)
    if isinstance(exc, exceptions.Base):
        data = {"exception": {
            "status_code": exc.status_code,
            "slug": exc.slug,
            "message": exc.message,
            "errors": exc.errors
        }}
    elif isinstance(exc, wz_exceptions.HTTPException):
        data = {"exception": {
            "status_code": exc.code,
            "slug": exc.name.lower().replace(' ', '_'),
            "message": exc.description,
            "errors": {}
        }}
    else:
        logger.error(traceback.format_exc())
        data = {"exception": {
            "status_code": 500,
            "slug": "unknown_error",
            "message": exc.message,
            "errors": {}
        }}
    return serializers.encode_response(data, data["exception"]["status_code"],
                                       mimetype)