[Zope] automagic reindexing of objects
Peter Bengtsson
peterbe at gmail.com
Fri Jun 17 10:43:48 EDT 2005
Personally I think one should stay the hell away from transactions.
They're not for you to fiddle with.
I understand your question and even though I think it's a bit crazy I
can see a benefit (simplicity for the programmer).
How about a trickery solution like this:
class CatalogPathAware:
def index_object(self, *a, **k):
print self.__class__.__name__, "in for indexing!"
class _MyProduct(CatalogPathAware):
def __init__(self, id, title=''):
self.id = id
self.title = title
def setTitle(self, title):
# could be much more complicated
self.title = title
class MyProduct(_MyProduct):
def setTitle(self, title):
_MyProduct.setTitle(self, title)
self.index_object()
inst = MyProduct("instanceA")
inst.setTitle('Peter')
print inst.title
You would basically rename your existing class from "Whatever" to
"_Whatever" and continue as before. This does mean however that you
have to explicitly write a function for each setter.
On 6/17/05, Jürgen Herrmann <Juergen.Herrmann at xlhost.de> wrote:
>
> [ Jonathan wrote:]
> >
> > ----- Original Message -----
> > From: "Jürgen Herrmann" <Juergen.Herrmann at XLhost.de>
> >> i make heavy use of indexes in my extension classes. these all inherit
> >> from catalogpathaware, so i have to call object.reindex_object() on
> >> each changed instance. calling it from attribute getters/setters f.ex.
> >> is not a good idea, because changing 3 attributes will reindex the
> >> object
> >> 3 times.
> >>
> >> what i'd like to have is that such objects are reindexed automatically
> >> before comitting a transaction.
> >
> > You can't index before committing. I think you need a different strategy:
> > how about creating all of the new objects and then call the
> > catalog/indexing
> > mechanism. We do this for one of our large volume catalogs (1m+ records),
> > by having an object class/catalog that are not 'aware' and then manually
> > (well, thru a python routine) cataloging/indexing the objects.
>
> hmm, it's not about newly created objects. i want to have automatic
> REindexing, in cleartext - i want to make it easy for the programmer:
> he/she should just call an attribute setter or maybe change a relation
> and just before the transaction would be committed to the storage, i'd
> like to cycle through all dirty objects and reindex them, if they're
> catalogpathaware (or implement reindex_object()...).
>
> >
> > HTH
> >
> > Jonathan
>
> juergen
> _______________________________________________________________________
>
> >> XLhost.de - eXperts in Linux hosting <<
>
> Juergen Herrmann
> Weiherweg 10, 93051 Regensburg, Germany
> Fon: +49 (0)700 XLHOSTDE [0700 95467833]
> Fax: +49 (0)721 151 463027
>
> ICQ: 27139974 - IRC: #XLhost at quakenet
> WEB: http://www.XLhost.de
> _______________________________________________
> Zope maillist - Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )
>
--
Peter Bengtsson,
work www.fry-it.com
home www.peterbe.com
hobby www.issuetrackerproduct.com
More information about the Zope
mailing list