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)