@@ -46,48 +46,51 @@ class ErrorController(BaseController):
related status codes are returned from the application.
This behavior can be altered by changing the parameters to the
ErrorDocuments middleware in your config/middleware.py file.
"""
def __before__(self):
# disable all base actions since we don't need them here
pass
def document(self):
resp = request.environ.get('pylons.original_response')
c.site_name = config.get('title')
log.debug('### %s ###' % (resp and resp.status or 'no response'))
e = request.environ
c.serv_p = r'%(protocol)s://%(host)s/' % {
'protocol': e.get('wsgi.url_scheme'),
'host': e.get('HTTP_HOST'), }
if resp:
c.error_message = cgi.escape(request.GET.get('code',
str(resp.status)))
c.error_explanation = self.get_error_explanation(resp.status_int)
else:
c.error_message = _('No response')
c.error_explanation = _('Unknown error')
return render('/errors/error_document.html')
def img(self, id):
"""Serve Pylons' stock images"""
return self._serve_file(os.path.join(media_path, 'img', id))
def style(self, id):
"""Serve Pylons' stock stylesheets"""
return self._serve_file(os.path.join(media_path, 'style', id))
def _serve_file(self, path):
"""Call Paste's FileApp (a WSGI application) to serve the file
at the specified path
fapp = paste.fileapp.FileApp(path)
return fapp(request.environ, self.start_response)
def get_error_explanation(self, code):
""" get the error explanations of int codes
[400, 401, 403, 404, 500]"""
try:
code = int(code)
except ValueError:
Status change: