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" |       permission="zope.ManageSite" | ||||||
|       /> |       /> | ||||||
| 
 | 
 | ||||||
|  |   <page | ||||||
|  |       name="cleanup_relations" | ||||||
|  |       for="loops.interfaces.ILoops" | ||||||
|  |       class="loops.browser.manager.CleanupRelations" | ||||||
|  |       attribute="cleanup" | ||||||
|  |       permission="zope.ManageSite" | ||||||
|  |       /> | ||||||
|  | 
 | ||||||
|   <include package=".skin" /> |   <include package=".skin" /> | ||||||
| 
 | 
 | ||||||
| </configure> | </configure> | ||||||
|  |  | ||||||
|  | @ -23,9 +23,12 @@ $Id$ | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from zope.app import zapi | from zope.app import zapi | ||||||
|  | from zope import component | ||||||
| from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent | from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent | ||||||
| from zope.event import notify | from zope.event import notify | ||||||
| from zope.formlib.form import FormFields | from zope.formlib.form import FormFields | ||||||
|  | 
 | ||||||
|  | from cybertools.relation.interfaces import IRelationRegistry | ||||||
| from loops.base import Loops | from loops.base import Loops | ||||||
| from loops.interfaces import ILoops | from loops.interfaces import ILoops | ||||||
| from loops.browser.common import AddForm, EditForm, BaseView | from loops.browser.common import AddForm, EditForm, BaseView | ||||||
|  | @ -58,3 +61,13 @@ class LoopsEditForm(EditForm): | ||||||
|     form_fields = FormFields(ILoops) |     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.interfaces import IAssignmentEvent, IDeassignmentEvent | ||||||
| from loops.security.common import canListObject | from loops.security.common import canListObject | ||||||
| from loops import util | from loops import util | ||||||
|  | from loops.versioning.util import getMaster | ||||||
| from loops.view import TargetRelation | from loops.view import TargetRelation | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -245,6 +246,8 @@ class Concept(Contained, Persistent): | ||||||
| 
 | 
 | ||||||
|     def getResourceRelations(self, predicates=None, resource=None, sort='default', |     def getResourceRelations(self, predicates=None, resource=None, sort='default', | ||||||
|                              noSecurityCheck=False): |                              noSecurityCheck=False): | ||||||
|  |         #if resource is not None: | ||||||
|  |         #    resource = getMaster(resource) | ||||||
|         predicates = predicates is None and ['*'] or predicates |         predicates = predicates is None and ['*'] or predicates | ||||||
|         relationships = [ResourceRelation(self, None, p) for p in predicates] |         relationships = [ResourceRelation(self, None, p) for p in predicates] | ||||||
|         if sort == 'default': |         if sort == 'default': | ||||||
|  | @ -258,6 +261,7 @@ class Concept(Contained, Persistent): | ||||||
|                                                 noSecurityCheck=noSecurityCheck)] |                                                 noSecurityCheck=noSecurityCheck)] | ||||||
| 
 | 
 | ||||||
|     def assignResource(self, resource, predicate=None, order=0, relevance=1.0): |     def assignResource(self, resource, predicate=None, order=0, relevance=1.0): | ||||||
|  |         resource = getMaster(resource) | ||||||
|         if predicate is None: |         if predicate is None: | ||||||
|             predicate = self.getConceptManager().getDefaultPredicate() |             predicate = self.getConceptManager().getDefaultPredicate() | ||||||
|         registry = component.getUtility(IRelationRegistry) |         registry = component.getUtility(IRelationRegistry) | ||||||
|  | @ -271,6 +275,7 @@ class Concept(Contained, Persistent): | ||||||
|         notify(AssignmentEvent(self, rel)) |         notify(AssignmentEvent(self, rel)) | ||||||
| 
 | 
 | ||||||
|     def deassignResource(self, resource, predicates=None, order=None): |     def deassignResource(self, resource, predicates=None, order=None): | ||||||
|  |         resource = getMaster(resource) | ||||||
|         registry = component.getUtility(IRelationRegistry) |         registry = component.getUtility(IRelationRegistry) | ||||||
|         for rel in self.getResourceRelations(predicates, resource): |         for rel in self.getResourceRelations(predicates, resource): | ||||||
|             if order is None or rel.order == order: |             if order is None or rel.order == order: | ||||||
|  |  | ||||||
|  | @ -106,9 +106,6 @@ class TestSite(object): | ||||||
|         component.provideUtility(IntIdsStub()) |         component.provideUtility(IntIdsStub()) | ||||||
|         relations = RelationRegistry() |         relations = RelationRegistry() | ||||||
|         relations.setupIndexes() |         relations.setupIndexes() | ||||||
|         #for idx in ('_attrName', '_attrIdentifier'): |  | ||||||
|         #    if idx not in relations: |  | ||||||
|         #        relations[idx] = FieldIndex(idx, IIndexableRelation) |  | ||||||
|         component.provideUtility(relations, IRelationRegistry) |         component.provideUtility(relations, IRelationRegistry) | ||||||
| 
 | 
 | ||||||
|         component.provideUtility(PrincipalAnnotationUtility(), IPrincipalAnnotationUtility) |         component.provideUtility(PrincipalAnnotationUtility(), IPrincipalAnnotationUtility) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm