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) |   >>> len(changes) | ||||||
|   1 |   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 | Fin de partie | ||||||
| ============= | ============= | ||||||
|  |  | ||||||
|  | @ -78,14 +78,23 @@ class ChangeManager(object): | ||||||
|             return getPersonForUser(self.context, principal=principal) |             return getPersonForUser(self.context, principal=principal) | ||||||
|         return None |         return None | ||||||
| 
 | 
 | ||||||
|     def recordModification(self, event=None): |     def recordModification(self, action='modify', **kw): | ||||||
|         if not self.valid: |         if not self.valid: | ||||||
|             return |             return | ||||||
|         uid = util.getUidForObject(self.context) |         uid = util.getUidForObject(self.context) | ||||||
|         personUid = util.getUidForObject(self.person) |         personUid = util.getUidForObject(self.person) | ||||||
|         last = self.storage.getLastUserTrack(uid, 0, personUid) |         last = self.storage.getLastUserTrack(uid, 0, personUid) | ||||||
|         if last is None or last.metadata['timeStamp'] < getTimeStamp() - 5: |         update = (last is not None and last.data.get('action') == action and | ||||||
|             self.storage.saveUserTrack(uid, 0, personUid, dict(action='modify')) |                   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): | class ChangeRecord(Track): | ||||||
|  | @ -95,4 +104,12 @@ class ChangeRecord(Track): | ||||||
| 
 | 
 | ||||||
| @adapter(ILoopsObject, IObjectModifiedEvent) | @adapter(ILoopsObject, IObjectModifiedEvent) | ||||||
| def recordModification(obj, event): | 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> |   </class> | ||||||
| 
 | 
 | ||||||
|   <subscriber handler="loops.organize.tracking.change.recordModification" /> |   <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" |   <adapter factory="loops.organize.tracking.setup.SetupManager" | ||||||
|            name="organize.tracking" /> |            name="organize.tracking" /> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm