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
> 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:
> 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 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]
** No cross posts or HTML encoding! **
(Related lists -