diff --git a/development.ini b/development.ini --- a/development.ini +++ b/development.ini @@ -11,9 +11,12 @@ debug = true ## 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 diff --git a/production.ini b/production.ini --- a/production.ini +++ b/production.ini @@ -11,9 +11,12 @@ debug = true ## 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 @@ port = 8001 [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 ## diff --git a/pylons_app/config/middleware.py b/pylons_app/config/middleware.py --- a/pylons_app/config/middleware.py +++ b/pylons_app/config/middleware.py @@ -49,9 +49,10 @@ def make_app(global_conf, full_stack = T # 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) diff --git a/pylons_app/controllers/error.py b/pylons_app/controllers/error.py --- a/pylons_app/controllers/error.py +++ b/pylons_app/controllers/error.py @@ -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 @@ class ErrorController(BaseController): 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 diff --git a/pylons_app/templates/errors/error_document.html b/pylons_app/templates/errors/error_document.html --- a/pylons_app/templates/errors/error_document.html +++ b/pylons_app/templates/errors/error_document.html @@ -6,14 +6,19 @@ Error - ${c.error_message} - + + %if c.redirect_time: + + %endif + +