def publishTraverse(self, request, name): try: return DefaultPublishTraverse.publishTraverse(self, request, name) except KeyError: if ILayer.providedBy(request): registry = getUtility(IRegistry) settings = registry.forInterface(IRoutesSettings) activated_routes = settings.routes fullpath = request.physicalPathFromURL( request.get('ACTUAL_URL', '')) context_path = self.context.getPhysicalPath() fullpath = fullpath[len(context_path):] for route_name in activated_routes: route = getRoute(route_name) if not route: continue if route.matches(fullpath, request): fragments = route.fragments fragment = fragments[0] query = route.defaultQuery.copy() query.update(fragment.query(name)) return FragmentContext(self.context, request, name, route, fragments[0], fragments[1:], query).__of__(self.context) raise
def publishTraverse(self, request, name): try: return DefaultPublishTraverse.publishTraverse(self, request, name) except KeyError: if ILayer.providedBy(request): pprops = getToolByName(self.context, 'portal_properties') props = pprops.routes_properties activated_routes = props.getProperty('activated_routes', ()) #path = request.environ['PATH_INFO'].split('/') path = request.physicalPathFromURL(request['URL']) context_path = self.context.getPhysicalPath() path = path[len(context_path):] for route_name in activated_routes: route = getRoute(route_name) if not route: continue if route.fragments[0].matches(path[0]): fragments = route.fragments fragment = fragments[0] query = route.defaultQuery.copy() query.update(fragment.query(name)) return FragmentContext(self.context, request, name, route, fragments[0], fragments[1:], query).__of__(self.context) raise