Mercurial > public > src > rhodecode
diff pylons_app/controllers/error.py @ 14:923f0e6ab010
change error controller,
added handling 404 to mercurial,
author | Marcin Kuzminski |
---|---|
date | Sat, 20 Feb 2010 22:45:59 +0100 |
parents | 564e40829f80 |
children | 9f6300b96380 |
line wrap: on
line diff
--- a/pylons_app/controllers/error.py Sat Feb 20 17:55:59 2010 +0100 +++ b/pylons_app/controllers/error.py Sat Feb 20 22:45:59 2010 +0100 @@ -1,10 +1,13 @@ import logging from paste.urlparser import PkgResourcesParser +import paste.fileapp 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 +from pylons.middleware import error_document_template, media_path import cgi +import os log = logging.getLogger(__name__) class ErrorController(BaseController): @@ -17,28 +20,41 @@ This behaviour can be altered by changing the parameters to the ErrorDocuments middleware in your config/middleware.py file. """ +# + def __before__(self): + pass def document(self): resp = request.environ.get('pylons.original_response') + log.debug(resp.status) 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_time = 0 c.redirect_module = _('Home page')# name to what your going to be redirected c.url_redirect = "/" 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 """ - request.environ['PATH_INFO'] = '/%s' % path - return forward(PkgResourcesParser('pylons', 'pylons')) + 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