track concept assignments
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2531 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									f518a4e104
								
							
						
					
					
						commit
						fd4be51425
					
				
					 3 changed files with 34 additions and 4 deletions
				
			
		|  | @ -59,6 +59,17 @@ Recording changes to objects | |||
|   >>> len(changes) | ||||
|   1 | ||||
| 
 | ||||
| Recording assignment changes | ||||
| ---------------------------- | ||||
| 
 | ||||
|   >>> from loops.organize.tracking.change import recordAssignment, recordDeassignment | ||||
|   >>> component.provideHandler(recordAssignment) | ||||
|   >>> component.provideHandler(recordDeassignment) | ||||
| 
 | ||||
|   >>> t01.assignChild(johnC) | ||||
|   >>> len(changes) | ||||
|   2 | ||||
| 
 | ||||
| 
 | ||||
| Fin de partie | ||||
| ============= | ||||
|  |  | |||
|  | @ -78,14 +78,23 @@ class ChangeManager(object): | |||
|             return getPersonForUser(self.context, principal=principal) | ||||
|         return None | ||||
| 
 | ||||
|     def recordModification(self, event=None): | ||||
|     def recordModification(self, action='modify', **kw): | ||||
|         if not self.valid: | ||||
|             return | ||||
|         uid = util.getUidForObject(self.context) | ||||
|         personUid = util.getUidForObject(self.person) | ||||
|         last = self.storage.getLastUserTrack(uid, 0, personUid) | ||||
|         if last is None or last.metadata['timeStamp'] < getTimeStamp() - 5: | ||||
|             self.storage.saveUserTrack(uid, 0, personUid, dict(action='modify')) | ||||
|         update = (last is not None and last.data.get('action') == action and | ||||
|                   last.metadata['timeStamp'] >= getTimeStamp() - 5) | ||||
|         data = dict(action=action) | ||||
|         relation = kw.get('relation') | ||||
|         if relation is not None: | ||||
|             data['predicate'] = util.getUidForObject(relation.predicate) | ||||
|             data['second'] = util.getUidForObject(relation.second) | ||||
|         if update: | ||||
|             self.storage.updateTrack(last, data) | ||||
|         else: | ||||
|             self.storage.saveUserTrack(uid, 0, personUid, data, update) | ||||
| 
 | ||||
| 
 | ||||
| class ChangeRecord(Track): | ||||
|  | @ -95,4 +104,12 @@ class ChangeRecord(Track): | |||
| 
 | ||||
| @adapter(ILoopsObject, IObjectModifiedEvent) | ||||
| def recordModification(obj, event): | ||||
|     ChangeManager(obj).recordModification(event) | ||||
|     ChangeManager(obj).recordModification() | ||||
| 
 | ||||
| @adapter(ILoopsObject, IAssignmentEvent) | ||||
| def recordAssignment(obj, event): | ||||
|     ChangeManager(obj).recordModification('assign', relation=event.relation) | ||||
| 
 | ||||
| @adapter(ILoopsObject, IDeassignmentEvent) | ||||
| def recordDeassignment(obj, event): | ||||
|     ChangeManager(obj).recordModification('deassign', relation=event.relation) | ||||
|  |  | |||
|  | @ -17,6 +17,8 @@ | |||
|   </class> | ||||
| 
 | ||||
|   <subscriber handler="loops.organize.tracking.change.recordModification" /> | ||||
|   <subscriber handler="loops.organize.tracking.change.recordAssignment" /> | ||||
|   <subscriber handler="loops.organize.tracking.change.recordDeassignment" /> | ||||
| 
 | ||||
|   <adapter factory="loops.organize.tracking.setup.SetupManager" | ||||
|            name="organize.tracking" /> | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm