[Zope3-Users] Problems with a catalog
    Tom Dossis 
    td at yoma.com.au
       
    Tue Sep 27 22:01:56 EDT 2005
    
    
  
1. How do I add a catalog to a site ?
2. Catalog error
1/---------------------------------------------------------
I get thus far..
 From the /++etc++site/@@SiteManagement form I can successfully add a 
Catalog object.  However, when I try to add an index, it fails ...
   File "... /zope/app/catalog/catalog.py", line 130, in indexAdded
   File "... /zope/app/catalog/catalog.py", line 68, in updateIndex
   File "... /zope/component/__init__.py", line 257, in getUtility
ComponentLookupError: (<InterfaceClass 
zope.app.intid.interfaces.IIntIds>, '')
Then if I try to add an IntId Tool, it fails  ...
   File "... app/catalog/catalog.py", line 144, in reindexDocSubscriber
   File "... component/__init__.py", line 257, in getUtility
ComponentLookupError: (<InterfaceClass 
zope.app.intid.interfaces.IIntIds>, '')
Actually, attempting to add any other object no longer works with the 
same error. So the catalog depends on a/the intid utilitly.
When I add a uid utility first, then a catalog, adding and index still 
fails (as above).
2/--------------------------------------------------------------------
However, if I add the IntId utility to /++etc++/default (rather than 
/++etc++/tools), I can add a catalog, then successfully create index(es).
However when I try to search the catalog it fails..
 >>> cat = zapi.getUtility(ICatalog, context=root)
 >>> print cat.searchResults()
None
 >>> print cat.searchResults(title_index='')
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
   File "... /zope/app/catalog/catalog.py", line 107, in searchResults
   File "/usr/lib/python2.4/site-packages/PIL/__init__.py", line 257, in 
getUtility
zope.component.interfaces.ComponentLookupError: (<InterfaceClass 
zope.app.intid.interfaces.IIntIds>, '')
(Don't know why PIL is appearing in the traceback.)
I can make it work if I change (catalog.py:107)
from: uidutil = zapi.getUtility(IIntIds)
to:   uidutil = zapi.getUtility(IIntIds, context=self)
 >>> cat = zapi.getUtility(ICatalog, context=root)
 >>> cat.searchResults(title_index='')
<zope.app.catalog.catalog.ResultSet instance at 0x41ac168c>
I don't know why the context needs to be explicitly set.  Is it 
something to do with how the IntIds/Calatogs should be added to the site?
    
    
More information about the Zope3-users
mailing list