[Zope-dev] Change Request in TextIndex implementation

Casey Duncan cduncan@kaivo.com
Tue, 31 Jul 2001 10:28:22 -0600


I have a product that uses a Catalogs (just plain, not ZCatalogs) for
indexing objects. It uses several Catalogs each of which share a
Vocabulary. This was easy to do in 2.3, however, some code in 2.4 makes
this a pain in the rear. Specifically line 204 of TextIndex.py, which
tries to get the vocabulary lexicon from the parent ZCatalog like so:

self._lexicon =
self.aq_parent.aq_parent[self.vocabulary_id].getLexicon()

In a world of implicit aquisition, this strikes me as very bad form. For
this to work, the vocabulary must reside in the parent of the parent of
the index, which must be a mapping object for it to find it. This is not
the case with my implementation, in fact the vocabulary can be basically
anywhere above the index.

Of course, I could simply pass in the lexicon when the Index is
instantiated. This is great and wonderful, except, I would like to
support Zope 2.3 in as seemless a way possible. Writing crap like this
bothers me (although I have little choice at this point methinks):

try:
    index = TextIndex('spam', lexicon=eggs)
except:
    index = 'TextIndex'

Can't we change the above line to be something like this, which does not
depend on a specific hierarchy?

self._lexicon = self.aq_parent.getattr(self.vocabulary_id).getLexicon()

That would make me very happy...
-- 
| Casey Duncan
| Kaivo, Inc.
| cduncan@kaivo.com
`------------------>