Mercurial > kallithea
changeset 14:923f0e6ab010
change error controller,
added handling 404 to mercurial,
author | Marcin Kuzminski |
---|---|
date | Sat, 20 Feb 2010 22:45:59 +0100 |
parents | b6b3533ad63c |
children | c8265b4f0c2a |
files | development.ini production.ini pylons_app/config/middleware.py pylons_app/controllers/error.py pylons_app/templates/errors/error_document.html |
diffstat | 5 files changed, 46 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/development.ini Sat Feb 20 17:55:59 2010 +0100 +++ b/development.ini Sat Feb 20 22:45:59 2010 +0100 @@ -11,9 +11,12 @@ ## Uncomment and replace with the address ## ## which should receive any error reports ## ############################################ -email_to = marcin.kuzminski@etelko.pl -smtp_server = localhost -error_email_from = paste_error@localhost +#email_to = marcin.kuzminski@etelko.pl +#smtp_server = mail.etelko.pl +#error_email_from = paste_error@localhost +#smtp_username = +#smtp_password = +#error_message = 'mercurial crash !' [server:main] use = egg:Paste#http
--- a/production.ini Sat Feb 20 17:55:59 2010 +0100 +++ b/production.ini Sat Feb 20 22:45:59 2010 +0100 @@ -11,9 +11,12 @@ ## Uncomment and replace with the address ## ## which should receive any error reports ## ############################################ -email_to = marcin.kuzminski@etelko.pl -smtp_server = localhost -error_email_from = paste_error@localhost +#email_to = marcin.kuzminski@etelko.pl +#smtp_server = mail.etelko.pl +#error_email_from = paste_error@localhost +#smtp_username = +#smtp_password = +#error_message = 'mercurial crash !' [server:main] use = egg:Paste#http @@ -22,14 +25,11 @@ [app:main] use = egg:pylons_app -full_stack = false +full_stack = true static_files = true -#default lang lang=en - cache_dir = %(here)s/data - ################################################################################ ## WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION ENVIRONMENT* ## ## Debug mode will enable the interactive debugging tool, allowing ANYONE to ##
--- a/pylons_app/config/middleware.py Sat Feb 20 17:55:59 2010 +0100 +++ b/pylons_app/config/middleware.py Sat Feb 20 22:45:59 2010 +0100 @@ -49,9 +49,10 @@ # Display error documents for 401, 403, 404 status codes (and # 500 when debug is disabled) if asbool(config['debug']): - app = StatusCodeRedirect(app) + #don't handle 404, since mercurial does it for us. + app = StatusCodeRedirect(app, [400, 401, 403, 500]) else: - app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) + app = StatusCodeRedirect(app, [400, 401, 403, 500]) # Establish the Registry for this application app = RegistryManager(app)
--- 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
--- a/pylons_app/templates/errors/error_document.html Sat Feb 20 17:55:59 2010 +0100 +++ b/pylons_app/templates/errors/error_document.html Sat Feb 20 22:45:59 2010 +0100 @@ -6,14 +6,19 @@ <head> <title>Error - ${c.error_message}</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> - <meta http-equiv="refresh" content="${c.redirect_time}; url=${c.url_redirect}"/> + + %if c.redirect_time: + <meta http-equiv="refresh" content="${c.redirect_time}; url=${c.url_redirect}"/> + %endif + + <style type="text/css"> body { font-family: sans-serif; } #main_div{ - border: 2px solid #8daed8; + border: 0px solid #000; width: 500px; margin: auto; text-align: center; @@ -31,7 +36,10 @@ <h1 class="error_message">${c.error_message}</h1> <p>${c.error_explanation}</p> - <p>${_('You will be redirected to %s in %s seconds') % (c.redirect_module,c.redirect_time)}</p> + %if c.redirect_time: + <p>${_('You will be redirected to %s in %s seconds') % (c.redirect_module,c.redirect_time)}</p> + %endif + </div> </body> </html>