Mercurial > public > src > rhodecode
diff pylons_app/controllers/error.py @ 0:564e40829f80
initial commit.
author | Marcin Kuzminski |
---|---|
date | Thu, 18 Feb 2010 13:01:57 +0100 |
parents | |
children | 923f0e6ab010 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pylons_app/controllers/error.py Thu Feb 18 13:01:57 2010 +0100 @@ -0,0 +1,62 @@ +import logging +from paste.urlparser import PkgResourcesParser +from pylons import request, tmpl_context as c +from pylons.controllers.util import forward +from pylons.i18n.translation import _ +from pylons_app.lib.base import BaseController, render +import cgi + +log = logging.getLogger(__name__) +class ErrorController(BaseController): + """ + Generates error documents as and when they are required. + + The ErrorDocuments middleware forwards to ErrorController when error + related status codes are returned from the application. + + This behaviour can be altered by changing the parameters to the + ErrorDocuments middleware in your config/middleware.py file. + """ + + def document(self): + + resp = request.environ.get('pylons.original_response') + c.error_message = cgi.escape(request.GET.get('code', str(resp.status))) + c.error_explanation = self.get_error_explanation(resp.status_int) + + c.serv_p = ''.join(['http://', request.environ.get('HTTP_HOST', '')]) + + #redirect to when error with given seconds + c.redirect_time = 5 + c.redirect_module = _('Home page')# name to what your going to be redirected + c.url_redirect = "/" + + return render('/errors/error_document.html') + + def _serve_file(self, path): + """Call Paste's FileApp (a WSGI application) to serve the file + at the specified path + """ + request.environ['PATH_INFO'] = '/%s' % path + return forward(PkgResourcesParser('pylons', 'pylons')) + + def get_error_explanation(self, code): + ''' get the error explanations of int codes + [400, 401, 403, 404, 500]''' + try: + code = int(code) + except: + code = 500 + + if code == 400: + return _('The request could not be understood by the server due to malformed syntax.') + if code == 401: + return _('Unathorized access to resource') + if code == 403: + return _("You don't have permission to view this page") + if code == 404: + return _('The resource could not be found') + if code == 500: + return _('The server encountered an unexpected condition which prevented it from fulfilling the request.') + +