fix resource assignment bug (with versioned resources); provide relation registry cleanup call
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3267 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
1f6229d2fd
commit
455906a58b
4 changed files with 26 additions and 3 deletions
|
@ -727,6 +727,14 @@
|
|||
permission="zope.ManageSite"
|
||||
/>
|
||||
|
||||
<page
|
||||
name="cleanup_relations"
|
||||
for="loops.interfaces.ILoops"
|
||||
class="loops.browser.manager.CleanupRelations"
|
||||
attribute="cleanup"
|
||||
permission="zope.ManageSite"
|
||||
/>
|
||||
|
||||
<include package=".skin" />
|
||||
|
||||
</configure>
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue