From 7a1c885fcd652cfaa6cf3f4fce218cc0ca71a204 Mon Sep 17 00:00:00 2001 From: helmutm Date: Thu, 14 Feb 2008 13:22:54 +0000 Subject: [PATCH] an additional setParents() method for concepts and other minor improvements git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2398 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/node.py | 6 ++++-- concept.py | 9 +++++++++ tests/setup.py | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/browser/node.py b/browser/node.py index 021d0d5..19ac927 100644 --- a/browser/node.py +++ b/browser/node.py @@ -126,7 +126,8 @@ class NodeView(BaseView): if target is not None: basicView = component.getMultiAdapter((target, self.request), name=viewName) # xxx: obsolete when self.targetObject is virtual target: - return basicView.view + if hasattr(basicView, 'view'): + return basicView.view return self.page @Lazy @@ -325,7 +326,8 @@ class NodeView(BaseView): basicView = component.getMultiAdapter((obj, self.request)) if obj == self.targetObject: basicView._viewName = self.context.viewName - return basicView.view + if hasattr(basicView, 'view'): + return basicView.view @Lazy def targetId(self): diff --git a/concept.py b/concept.py index 558bc29..96d3351 100644 --- a/concept.py +++ b/concept.py @@ -217,6 +217,15 @@ class Concept(Contained, Persistent): def assignParent(self, concept, predicate=None, order=0, relevance=1.0): concept.assignChild(self, predicate, order, relevance) + def setParents(self, predicate, concepts): + existing = self.getParents([predicate]) + for c in existing: + if c not in concepts: + self.deassignParent(c, [predicate]) + for c in concepts: + if c not in existing: + self.assignParent(c, predicate) + def deassignChild(self, child, predicates=None, order=None): registry = component.getUtility(IRelationRegistry) for rel in self.getChildRelations(predicates, child): diff --git a/tests/setup.py b/tests/setup.py index f0eb57c..dcac7fc 100644 --- a/tests/setup.py +++ b/tests/setup.py @@ -133,7 +133,7 @@ class TestSite(object): component.provideAdapter(NoteSchemaFactory) component.provideAdapter(Controller, (Interface, IBrowserRequest), - IBrowserView, name='controller') + IBrowserView, name='controller') component.provideAdapter(MemberInfoProvider, (ILoopsObject, IBrowserRequest))