limit tracking of changis to types specified in global option (if given)

This commit is contained in:
Helmut Merz 2014-01-05 14:45:56 +01:00
parent 311a3e5db4
commit d93074a038

View file

@ -26,6 +26,7 @@ from zope.interface import implements
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.component import adapter from zope.component import adapter
from zope.lifecycleevent.interfaces import IObjectModifiedEvent, IObjectCreatedEvent from zope.lifecycleevent.interfaces import IObjectModifiedEvent, IObjectCreatedEvent
from zope.traversing.api import getName
from cybertools.meta.interfaces import IOptions from cybertools.meta.interfaces import IOptions
from cybertools.tracking.btree import Track, getTimeStamp from cybertools.tracking.btree import Track, getTimeStamp
@ -54,10 +55,14 @@ class ChangeManager(BaseRecordManager):
req = util.getRequest() req = util.getRequest()
if req and req.form.get('organize.suppress_tracking'): if req and req.form.get('organize.suppress_tracking'):
return False return False
return (not (self.context is None or if self.context is None or self.storage is None or self.personId is None:
self.storage is None or return False
self.personId is None) opt = self.options('organize.tracking.changes')
and self.options('organize.tracking.changes')) if isinstance(opt, (list, tuple)):
type = self.context.getType()
return type and getName(type) in opt
else:
return bool(opt)
def recordModification(self, action='modify', **kw): def recordModification(self, action='modify', **kw):
if not self.valid: if not self.valid: