Michael Merickel
2011-07-17 1aa86442c2fef0c0ea7af95107cf46e5b21eabfa
Moved pregenerator and suffix computations into Route.gen().
2 files modified
30 ■■■■■ changed files
pyramid/url.py 14 ●●●● patch | view | raw | blame | history
pyramid/urldispatch.py 16 ●●●●● patch | view | raw | blame | history
pyramid/url.py
@@ -117,8 +117,7 @@
    if route is None:
        raise KeyError('No such route named %s' % route_name)
    if route.pregenerator is not None:
        elements, kw = route.pregenerator(request, elements, kw)
    path, kw = route.gen(request, elements, kw)
    anchor = ''
    qs = ''
@@ -136,22 +135,13 @@
    if '_app_url' in kw:
        app_url = kw.pop('_app_url')
    path = route.generate(kw) # raises KeyError if generate fails
    if elements:
        suffix = join_elements(elements)
        if not path.endswith('/'):
            suffix = '/' + suffix
    else:
        suffix = ''
    if app_url is None:
        # we only defer lookup of application_url until here because
        # it's somewhat expensive; we won't need to do it if we've
        # been passed _app_url
        app_url = request.application_url
    return app_url + path + suffix + qs + anchor
    return app_url + path + qs + anchor
def route_path(route_name, request, *elements, **kw):
    """Generates a path (aka a 'relative URL', a URL minus the host, scheme,
pyramid/urldispatch.py
@@ -10,6 +10,7 @@
from pyramid.exceptions import URLDecodeError
from pyramid.traversal import traversal_path
from pyramid.traversal import quote_path_segment
from pyramid.util import join_elements
_marker = object()
@@ -26,6 +27,21 @@
        self.predicates = predicates
        self.pregenerator = pregenerator
    def gen(self, request, elements, kw):
        if self.pregenerator is not None:
            elements, kw = self.pregenerator(request, elements, kw)
        path = self.generate(kw)
        if elements:
            suffix = join_elements(elements)
            if not path.endswith('/'):
                suffix = '/' + suffix
        else:
            suffix = ''
        return path + suffix, kw
class RoutesMapper(object):
    implements(IRoutesMapper)
    def __init__(self):