track changes also for users without Person objects; track creation of objects
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2940 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
d1dbe47d57
commit
31c4eae66f
2 changed files with 21 additions and 9 deletions
|
@ -50,14 +50,20 @@ class ChangeView(TrackView):
|
||||||
@Lazy
|
@Lazy
|
||||||
def user(self):
|
def user(self):
|
||||||
uid = self.metadata['userName']
|
uid = self.metadata['userName']
|
||||||
return util.getObjectForUid(uid)
|
if uid.isdigit():
|
||||||
|
obj = util.getObjectForUid(uid)
|
||||||
|
if obj is not None:
|
||||||
|
return obj
|
||||||
|
return uid
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def userTitle(self):
|
def userTitle(self):
|
||||||
|
if isinstance(self.user, basestring):
|
||||||
|
return self.user
|
||||||
return getattr(self.user, 'title', getName(self.user))
|
return getattr(self.user, 'title', getName(self.user))
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def userUrl(self):
|
def userUrl(self):
|
||||||
user = self.user
|
user = self.user
|
||||||
if user is not None:
|
if user is not None and not isinstance(user, basestring):
|
||||||
return '%s/@@SelectedManagementView.html' % absoluteURL(user, self.request)
|
return '%s/@@introspector.html' % absoluteURL(user, self.request)
|
||||||
|
|
|
@ -59,7 +59,7 @@ class ChangeManager(object):
|
||||||
def valid(self):
|
def valid(self):
|
||||||
return (not (self.context is None or
|
return (not (self.context is None or
|
||||||
self.storage is None or
|
self.storage is None or
|
||||||
self.person is None)
|
self.personId is None)
|
||||||
and 'changes' in self.options('organize.tracking', ()))
|
and 'changes' in self.options('organize.tracking', ()))
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
|
@ -74,18 +74,20 @@ class ChangeManager(object):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def person(self):
|
def personId(self):
|
||||||
principal = getCurrentPrincipal()
|
principal = getCurrentPrincipal()
|
||||||
if principal is not None:
|
if principal is not None:
|
||||||
return getPersonForUser(self.context, principal=principal)
|
person = getPersonForUser(self.context, principal=principal)
|
||||||
|
if person is None:
|
||||||
|
return principal.id
|
||||||
|
return util.getUidForObject(person)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def recordModification(self, action='modify', **kw):
|
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)
|
last = self.storage.getLastUserTrack(uid, 0, self.personId)
|
||||||
last = self.storage.getLastUserTrack(uid, 0, personUid)
|
|
||||||
update = (last is not None and last.data.get('action') == action and
|
update = (last is not None and last.data.get('action') == action and
|
||||||
last.metadata['timeStamp'] >= getTimeStamp() - 5)
|
last.metadata['timeStamp'] >= getTimeStamp() - 5)
|
||||||
data = dict(action=action)
|
data = dict(action=action)
|
||||||
|
@ -96,7 +98,7 @@ class ChangeManager(object):
|
||||||
if update:
|
if update:
|
||||||
self.storage.updateTrack(last, data)
|
self.storage.updateTrack(last, data)
|
||||||
else:
|
else:
|
||||||
self.storage.saveUserTrack(uid, 0, personUid, data, update)
|
self.storage.saveUserTrack(uid, 0, self.personId, data, update)
|
||||||
|
|
||||||
|
|
||||||
class IChangeRecord(ITrack):
|
class IChangeRecord(ITrack):
|
||||||
|
@ -115,6 +117,10 @@ class ChangeRecord(Track):
|
||||||
def recordModification(obj, event):
|
def recordModification(obj, event):
|
||||||
ChangeManager(obj).recordModification()
|
ChangeManager(obj).recordModification()
|
||||||
|
|
||||||
|
@adapter(ILoopsObject, IObjectCreatedEvent)
|
||||||
|
def recordModification(obj, event):
|
||||||
|
ChangeManager(obj).recordModification('create')
|
||||||
|
|
||||||
@adapter(ILoopsObject, IAssignmentEvent)
|
@adapter(ILoopsObject, IAssignmentEvent)
|
||||||
def recordAssignment(obj, event):
|
def recordAssignment(obj, event):
|
||||||
ChangeManager(obj).recordModification('assign', relation=event.relation)
|
ChangeManager(obj).recordModification('assign', relation=event.relation)
|
||||||
|
|
Loading…
Add table
Reference in a new issue