Casey Duncan wrote: > > I am posting this here to get reactions here for something that we have been > discussing on zope-dev that pertains to the ZODB. > > Dieter M. discovered that bobobase_modification_time (henceforth referred to > as b_m_t) is not always an accurate representation of an object's > modification time, especially when an object has been modified in a > transaction that has not been commited. This is a problem when doing things > like cataloging an object in the same transaction that it is modified. > > I thought this issue created an opprotunity to solve two problems. The above > problem and the anachronistic b_m_t API itself, which is always good for a > laugh in Zope classes. The idea is to create a new method in PersistentExtra > "getModificationTime" which returns the actual modification time of an object > based on the time the change is registered if it has been changed and not > commited and then the last commit time if no change has been made. I also > propose we add a second method "getLastCommitTime" or some-such which behaves > the same as the current b_m_t method. At the same time we would deprecate > b_m_t. > > Kapil Thangavelu prototyped a couple of ideas. I think his latest code is > simple and straighforward enough to be incorporated, although it does not yet > replace and deprecate b_m_t, which I think is important. > > He posted sample code to zope-dev yesterday, here is a (rather long) link: > >http://zope.nipltd.com/public/lists/dev-archive.nsf/0a8715d5f3c7b6a3802568c1006328f7/9dcad434e2a73f2680256b3a006abc37?OpenDocument > > Thoughts anyone?
The basic problem is that b_m_t is a database modification time, not an application-meaningful time. You pointed out that there are application-meaningful times that are not captured by the database time. In addition, there are database modifications that are not meaningful to the application. Operations like export/import (copy/paste), version commit/abort, transactional undo, etc. cause the database times to change without making application-meaningful changes. Also, there could be state changes in an object that are not meaningful to the application. I think that a much better approach, if modification time is important to your application, is to store the application modification time in the object as a data attribute. Jim -- Jim Fulton mailto:[EMAIL PROTECTED] Python Powered! CTO (888) 344-4332 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )