Mercurial > kallithea
changeset 87:9f6300b96380
Updated error handling, from mercurial to pylons. + added tempalte for 404
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Sun, 18 Apr 2010 21:15:53 +0200 |
parents | e47d1db5ef20 |
children | 911dab498eb2 |
files | pylons_app/controllers/error.py pylons_app/lib/filters.py pylons_app/templates/errors/error_404.html |
diffstat | 3 files changed, 59 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/pylons_app/controllers/error.py Sun Apr 18 20:06:35 2010 +0200 +++ b/pylons_app/controllers/error.py Sun Apr 18 21:15:53 2010 +0200 @@ -1,7 +1,7 @@ import logging from paste.urlparser import PkgResourcesParser import paste.fileapp -from pylons import request, tmpl_context as c +from pylons import tmpl_context as c, app_globals as g, request, config from pylons.controllers.util import forward from pylons.i18n.translation import _ from pylons_app.lib.base import BaseController, render @@ -22,17 +22,27 @@ """ # def __before__(self): - pass - + c.repos_prefix = config['repos_name'] + c.staticurl = g.statics + c.repo_name = request.environ['pylons.original_request']\ + .environ.get('PATH_INFO').split('/')[-1] + def document(self): - resp = request.environ.get('pylons.original_response') log.debug(resp.status) + + e = request.environ + c.serv_p = r'%(protocol)s://%(host)s/' % { + 'protocol': e.get('wsgi.url_scheme'), + 'host':e.get('HTTP_HOST'), + } + + if resp.status_int == 404: + return render('/errors/error_404.html') + 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 = 0 c.redirect_module = _('Home page')# name to what your going to be redirected
--- a/pylons_app/lib/filters.py Sun Apr 18 20:06:35 2010 +0200 +++ b/pylons_app/lib/filters.py Sun Apr 18 21:15:53 2010 +0200 @@ -1,5 +1,13 @@ from mercurial import util from mercurial.templatefilters import age as _age, person as _person +from string import punctuation + +def clean_repo(repo_name): + for x in punctuation: + if x != '_': + repo_name = repo_name.replace(x, '') + repo_name = repo_name.lower().strip() + return repo_name.replace(' ', '_') age = lambda x:_age(x) capitalize = lambda x: x.capitalize()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pylons_app/templates/errors/error_404.html Sun Apr 18 21:15:53 2010 +0200 @@ -0,0 +1,35 @@ +## -*- coding: utf-8 -*- +<%! +from pylons_app.lib import filters +%> +<%inherit file="./../base/base.html"/> + +<%def name="title()"> + ${_('Repository not found')} +</%def> + +<%def name="breadcrumbs()"> + ${h.link_to(u'Home',h.url('hg_home'))} + / + ${h.link_to(u'Admin',h.url('admin_home'))} +</%def> + +<%def name="page_nav()"> +<li>${h.link_to(u'Home',h.url('hg_home'))}</li> +<li class="current">${_('Admin')}</li> +</%def> +<%def name="js()"> + +</%def> +<%def name="main()"> + + <h2 class="no-link no-border">Not Found</h2> + <p class="normal">The specified repository "${c.repo_name}" is unknown, sorry.</p> + <p class="normal"> + <a href="/_admin/add_repo/${c.repo_name|n,filters.clean_repo}">Create "${c.repo_name}" repository as ${c.repo_name|n,filters.clean_repo}</a> + + </p> + <p class="normal">Go back to the ${h.link_to(_('main repository list page'),h.url('hg_home'))}.</p> + <div class="page-footer"> + </div> +</%def> \ No newline at end of file