[Zope3-Users] Anyone had any success with ZCatalog in Zope 3?

Martijn Faassen faassen at infrae.com
Wed Nov 23 06:49:12 EST 2005


Johan Carlsson wrote:
> 
> Anyone had any success with ZCatalog in Zope 3?

Sure. I'm not sure what the problem is but I see you get a lot of 
replies. We (Infrae) certainly got it working without having to patch 
anything.

Um, the setup code we use it something like:

def _registerUtility(context, class_, interface, name=u''):
     if not name:
         cname = class_.__name__
     else:
         cname = name
     if name and name in context:
         raise ValueError, u'Utility %s already registered!' % name
     utility = class_()
     context[cname] = utility
     registration = UtilityRegistration(name, interface, utility)
     key = context.registrationManager.addRegistration(registration)
     zapi.traverse(context.registrationManager, key).status =  ActiveStatus
     return utility

in setup code...

     from zope.app.intid.interfaces import IIntIds
     from zope.app.catalog.interfaces import ICatalog
     from zope.app.intid import IntIds
     from zope.app.catalog.catalog import Catalog

     _registerUtility(default, IntIds, IIntIds)
     _registerUtility(default, Catalog, ICatalog, u'my_catalog')

and then to make indexes registered, something like:

     from zope.app import zapi
     from zope.app.catalog.field import FieldIndex

     catalog = zapi.getUtility(ICatalog, u'my_catalog')
     catalog['something'] = FieldIndex('something', ISomeInterface)

_registerUtility is rather messy but it works..

Anyway, once you do get the catalog working, you may want to check out 
hurry.query, which makes querying the Zope 3 catalog a lot easier (in my 
opinion):

http://codespeak.net/svn/z3/hurry/trunk

Regards,

Martijn


More information about the Zope3-users mailing list