From b9f2f5b6ef8203d656e2f3447a31151ce6bf3ede Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Tue, 23 Aug 2011 00:21:50 -0500 Subject: Modified routes and views to delay more work until their actions. --- pyramid/config/routes.py | 20 ++++++++++---------- pyramid/config/views.py | 21 ++++++++++----------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/pyramid/config/routes.py b/pyramid/config/routes.py index b83ca346c..94d3e2427 100644 --- a/pyramid/config/routes.py +++ b/pyramid/config/routes.py @@ -345,16 +345,6 @@ class RoutesConfiguratorMixin(object): 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 @@ class RoutesConfiguratorMixin(object): 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) diff --git a/pyramid/config/views.py b/pyramid/config/views.py index 633906468..c7ef52ee8 100644 --- a/pyramid/config/views.py +++ b/pyramid/config/views.py @@ -870,17 +870,6 @@ class ViewsConfiguratorMixin(object): 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 @@ class ViewsConfiguratorMixin(object): 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: -- cgit v1.2.3