Michael Merickel
2011-08-23 b9f2f5b6ef8203d656e2f3447a31151ce6bf3ede
Modified routes and views to delay more work until their actions.
2 files modified
41 ■■■■ changed files
pyramid/config/routes.py 20 ●●●● patch | view | raw | blame | history
pyramid/config/views.py 21 ●●●● patch | view | raw | blame | history
pyramid/config/routes.py
@@ -345,16 +345,6 @@
            custom=custom_predicates
            )
        request_iface = self.registry.queryUtility(IRouteRequest, name=name)
        if request_iface is None:
            if use_global_views:
                bases = (IRequest,)
            else:
                bases = ()
            request_iface = route_request_iface(name, bases)
            self.registry.registerUtility(
                request_iface, IRouteRequest, name=name)
        # deprecated adding views from add_route
        if any([view, view_context, view_permission, view_renderer,
                view_for, for_, permission, renderer, view_attr]):
@@ -379,6 +369,16 @@
        mapper = self.get_routes_mapper()
        def register():
            request_iface = self.registry.queryUtility(IRouteRequest, name=name)
            if request_iface is None:
                if use_global_views:
                    bases = (IRequest,)
                else:
                    bases = ()
                request_iface = route_request_iface(name, bases)
                self.registry.registerUtility(
                    request_iface, IRouteRequest, name=name)
            return mapper.connect(name, pattern, factory, predicates=predicates,
                                  pregenerator=pregenerator, static=static)
pyramid/config/views.py
@@ -870,17 +870,6 @@
                raise ConfigurationError(
                    'request_type must be an interface, not %s' % request_type)
        request_iface = IRequest
        if route_name is not None:
            request_iface = self.registry.queryUtility(IRouteRequest,
                                                       name=route_name)
            if request_iface is None:
                # route configuration should have already happened
                raise ConfigurationError(
                    'No route named %s found for view registration' %
                    route_name)
        order, predicates, phash = make_predicates(xhr=xhr,
            request_method=request_method, path_info=path_info,
            request_param=request_param, header=header, accept=accept,
@@ -902,6 +891,16 @@
                registry = self.registry)
        def register(permission=permission, renderer=renderer):
            request_iface = IRequest
            if route_name is not None:
                request_iface = self.registry.queryUtility(IRouteRequest,
                                                           name=route_name)
                if request_iface is None:
                    # route configuration should have already happened
                    raise ConfigurationError(
                        'No route named %s found for view registration' %
                        route_name)
            if renderer is None:
                # use default renderer if one exists (reg'd in phase 1)
                if self.registry.queryUtility(IRendererFactory) is not None: