diff --git a/layout/browser/base.py b/layout/browser/base.py index 430e9d3..fc6e2a8 100644 --- a/layout/browser/base.py +++ b/layout/browser/base.py @@ -42,6 +42,26 @@ class BaseView(object): self.context = removeSecurityProxy(context) # this is the adapted concept! self.request = request + @Lazy + def loopsRoot(self): + return self.context.getLoopsRoot() + + @Lazy + def defaultPredicate(self): + return self.loopsRoot.getConceptManager().getDefaultPredicate() + + @Lazy + def conceptManager(self): + return self.loopsRoot.getConceptManager() + + @Lazy + def resourceManager(self): + return self.loopsRoot.getResourceManager() + + @Lazy + def defaultPredicate(self): + return self.conceptManager.getDefaultPredicate() + @Lazy def viewAnnotations(self): return self.request.annotations.get('loops.view', {}) diff --git a/layout/browser/traversal.py b/layout/browser/traversal.py index 94719d8..4dea60c 100644 --- a/layout/browser/traversal.py +++ b/layout/browser/traversal.py @@ -62,11 +62,16 @@ class NodeTraverser(ItemTraverser): tv = component.getMultiAdapter((target, request), name='layout') viewAnnotations['targetView'] = tv return self.context - try: - obj = super(NodeTraverser, self).publishTraverse(request, name) - except NotFound, e: - viewAnnotations['pageName'] = name - return self.context + obj = None + # for name, tr in component.getAdapters(self.context, IPublishTraverse): + # if name: + # obj = tr.publishTraverse(request, name) + if obj is None: + try: + obj = super(NodeTraverser, self).publishTraverse(request, name) + except NotFound, e: + viewAnnotations['pageName'] = name + return self.context return obj def cleanUpTraversalStack(self, request, name):