[Zope3-Users] generations and utilities

Paolo Invernizzi arathorn at fastwebnet.it
Tue Jan 31 11:16:19 EST 2006


Hello,

I've developed a content object for zope and I'm using the install.py 
script in a generation package to install some prebuild content 
instances in a folder, and everything works well.

I'm now trying to add a Catalog plus IntIds to do some search... but I'm 
doing  something wrong...

I cannot find the right way to install an IntIds (at least!) in the 
global site (I don't care about local sites) and populate the 
application via a generation install.py....

Must I move the IntIds and Catalog instantiation/registration outside 
the script?

def evolve(context):
     """Install an articles folder full of pre-made articles
     """
     root = context.connection.root()
     app = root['Application']

     # app is a ISite...
     assert ISite.providedBy(app)

     # get the sitemanager
     sitemanager = app.getSiteManager()
     default = sitemanager['default']

     # add an intids
     intids = IntIds()
     default['intids'] = intids
     intids_reg = UtilityRegistration('', IIntIds, intids)
     default.registrationManager.addRegistration(intids_reg)
     intids_reg.status = ActiveStatus

     # add a catalog
     catalog = Catalog()
     default['catalog'] = catalog
     catalog_reg = UtilityRegistration('', ICatalog, catalog)
     default.registrationManager.addRegistration(catalog_reg)
     catalog_reg.status = ActiveStatus

     # This bangs with
     #  File 
"/Users/arathorn/local/Zope-3_2_0/lib/python/zope/interface/adapter.py", 
line 481, in subscribers
     # subscribers = [subscription(*objects)
     # File 
"/Users/arathorn/local/Zope-3_2_0/lib/python/zope/app/catalog/catalog.py", 
line 130, in indexAdded
     # index.__parent__.updateIndex(index)
     # File 
"/Users/arathorn/local/Zope-3_2_0/lib/python/zope/app/catalog/catalog.py", 
line 68, in updateIndex
     # uidutil = zapi.getUtility(IIntIds)
     # File 
"/Users/arathorn/local/Zope-3_2_0/lib/python/zope/component/__init__.py", 
line 257, in getUtility
     # raise ComponentLookupError(interface, name)
     # zope.component.interfaces.ComponentLookupError: (<InterfaceClass 
zope.app.intid.interfaces.IIntIds>, '')
     #catalog['title'] = FieldIndex('title', IArticle)

     print "==============================================="
     print "Installing prebuild articles..."
     print "==============================================="

     app['articles'] = articles = Articles()
     ... etc etc...


Thanks!

Paolo





More information about the Zope3-users mailing list