
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com> Cherrpy support a custom error handling. http://docs.cherrypy.org/stable/refman/_cperror.html#custom-error-handling But the arguments of custom error handling are fixed. They are (status, message, traceback, version) http://docs.cherrypy.org/stable/refman/_cperror.html#anticipated-http-respon... But now in code we would raise an exception as: raise KimchiError(<msg>, <params>) We need to pass the message and the args So we should not use the cherrpy custom error handling. Overridden the HTTPError for kimchi needs. Signed-off-by: ShaoHe Feng <shaohef@linux.vnet.ibm.com> --- src/kimchi/template.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/kimchi/template.py b/src/kimchi/template.py index 173e7c6..f14ee90 100644 --- a/src/kimchi/template.py +++ b/src/kimchi/template.py @@ -107,3 +107,17 @@ def render(resource, data): raise else: raise cherrypy.HTTPError(406) + +class HTTPError(cherrypy.HTTPError): + def __init__(self, status=500, exception=None, message=None): + super(HTTPError, self).__init__(status, message) + self.exception = exception + + + def get_error_page(self, status, **kwargs): + data = {'message': self.exception.message} + if cherrypy.config.get("environment") != "production": + data['call_stack'] = cherrypy._cperror.format_exc() + res = render('error.html', data) + + return res.encode("utf-8") -- 1.7.10.4