def exception_json_view(exc, request): """ Return a json error response upon generic errors (404s, 403s, 500s, etc..). This is here to catch everything that isn't caught by our cornice error handlers. When we do catch something, we transform it into a cornice Errors object and pass it to our nice cornice error handler. That way, all the exception presentation and rendering we can keep in one place. Args: exc (Exception): The unhandled exception. request (pyramid.request.Request): The current request. Returns: bodhi.server.services.errors.json_handler: A pyramid.httpexceptions.HTTPError to be rendered to the user for the given exception. """ errors = getattr(request, 'errors', []) status = getattr(exc, 'status_code', 500) if status not in (404, 403): log.exception("Error caught. Handling JSON response.") else: log.warning(str(exc)) if not len(errors): description = getattr(exc, 'explanation', None) or str(exc) errors = cornice.errors.Errors(status=status) errors.add('body', description=description, name=exc.__class__.__name__) request.errors = errors return bodhi.server.services.errors.json_handler(request)
def exception_view(exc, request): """ A generic error page handler (404s, 403s, 500s, etc..) This is here to catch everything that isn't caught by our cornice error handlers. When we do catch something, we transform it intpu a cornice Errors object and pass it to our nice cornice error handler. That way, all the exception presentation and rendering we can keep in one place. """ errors = getattr(request, 'errors', []) status = getattr(exc, 'status_code', 500) if status not in (404, 403): log.exception("Error caught. Handling HTML response.") else: log.warn(str(exc)) if not len(errors): description = getattr(exc, 'explanation', None) or str(exc) errors = cornice.errors.Errors(request, status=status) errors.add('unknown', description=description) return bodhi.services.errors.html_handler(errors)