On Monday 07 January 2002 06:20 am, Casey Duncan wrote:
> On Saturday 05 January 2002 08:15 pm, kapil thangavelu allegedly wrote:
> > On Sunday 30 December 2001 08:00 pm, Casey Duncan wrote:
> > > This behavior is logical if unintuitive. I propose
> > > that we can kill two birds with one stone to fix this:
> > >
> > >  - Add a new method perhaps: getModificationTime() to
> > > the API of SimpleItem or even Persistent that returns
> > > the ZODB modification time or if the object has been
> > > changed, but not yet commited, the current date/time.
> > >
> > > - Deprecate bobobase_mod_time and perhaps even omit it
> > > entirely from Zope3.
> > >
> > > This will fix the aforementioned bug and get rid of an
> > > API anachronism.
> > >
> > > Thoughts?
> >
> > sounds good, i played around with an implementation to do the above. i'm
> > not posting it here causes its inefficient, although i'm happy to email
> > it to anyone who's interested. it basically added three methods.
>
> [snip details]
>
> For memory concerns, couldn't you just store the DateTime as a floating
> point number? This would incur just a small overhead to create a DateTime
> object when the value is looked up.
>
> I am interested in seeing this code. From my perspective it seems overly
> sophisticated. I'm interested how you derive the registration time in the
> first place.

your right, what i did was overly complex. i took your suggestions and 
simplified to the following two methods, which stores the txn registration 
time on the object as a float. it looks like an ok solution, imo. it doesn't 
do much for newly created persistent objects for which it falls through to 
the behavior of bobobase_modification_time and returns the current time.

in PersistentUtil class in lib/python/App/PersistentExtra.py new method

from Acquisition import aq_base
def getModificationTime(self):
        ob = aq_base(self)
        if hasattr(ob, '_p_changed') and ob._p_changed:
                return DateTime(self._p_registration_time)
        else: return self.bobobase_modification_time()

in Transaction class in lib/python/ZODB/Transaction.py altered register method

def register(self, object):
        self._append(object)
        object._p_registration_time = time.time()


cheers

kapil

_______________________________________________
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 )

Reply via email to