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