diff --git a/browser/configure.zcml b/browser/configure.zcml index fee72f0..062f846 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -727,6 +727,14 @@ permission="zope.ManageSite" /> + + diff --git a/browser/manager.py b/browser/manager.py index a7f4aeb..99ce71c 100644 --- a/browser/manager.py +++ b/browser/manager.py @@ -23,9 +23,12 @@ $Id$ """ from zope.app import zapi +from zope import component from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent from zope.event import notify from zope.formlib.form import FormFields + +from cybertools.relation.interfaces import IRelationRegistry from loops.base import Loops from loops.interfaces import ILoops from loops.browser.common import AddForm, EditForm, BaseView @@ -58,3 +61,13 @@ class LoopsEditForm(EditForm): form_fields = FormFields(ILoops) +class CleanupRelations(object): + + def __init__(self, context, request): + self.context = context + self.request = request + + def cleanup(self): + rr = component.getUtility(IRelationRegistry) + rr.cleanupRelations() + return 'Done' diff --git a/concept.py b/concept.py index 97ad540..4a6e518 100644 --- a/concept.py +++ b/concept.py @@ -55,6 +55,7 @@ from loops.interfaces import IIndexAttributes from loops.interfaces import IAssignmentEvent, IDeassignmentEvent from loops.security.common import canListObject from loops import util +from loops.versioning.util import getMaster from loops.view import TargetRelation @@ -245,6 +246,8 @@ class Concept(Contained, Persistent): def getResourceRelations(self, predicates=None, resource=None, sort='default', noSecurityCheck=False): + #if resource is not None: + # resource = getMaster(resource) predicates = predicates is None and ['*'] or predicates relationships = [ResourceRelation(self, None, p) for p in predicates] if sort == 'default': @@ -258,6 +261,7 @@ class Concept(Contained, Persistent): noSecurityCheck=noSecurityCheck)] def assignResource(self, resource, predicate=None, order=0, relevance=1.0): + resource = getMaster(resource) if predicate is None: predicate = self.getConceptManager().getDefaultPredicate() registry = component.getUtility(IRelationRegistry) @@ -271,6 +275,7 @@ class Concept(Contained, Persistent): notify(AssignmentEvent(self, rel)) def deassignResource(self, resource, predicates=None, order=None): + resource = getMaster(resource) registry = component.getUtility(IRelationRegistry) for rel in self.getResourceRelations(predicates, resource): if order is None or rel.order == order: diff --git a/tests/setup.py b/tests/setup.py index db67352..ec9acc1 100644 --- a/tests/setup.py +++ b/tests/setup.py @@ -106,9 +106,6 @@ class TestSite(object): component.provideUtility(IntIdsStub()) relations = RelationRegistry() relations.setupIndexes() - #for idx in ('_attrName', '_attrIdentifier'): - # if idx not in relations: - # relations[idx] = FieldIndex(idx, IIndexableRelation) component.provideUtility(relations, IRelationRegistry) component.provideUtility(PrincipalAnnotationUtility(), IPrincipalAnnotationUtility)