Martijn Faassen writes about implementing extended catalog queries in Zope 3.
Why was this so easy in Zope 3? I think there are two reasons:
- Clean implementation of the catalog makes it code fairly easy to read and thus write similar code. The catalog implementation in Zope 2 is a horror to try understanding, in Zope 3 it really is surprisingly easy. This pattern holds for much of the Zope 3 code base.
- Zope 3 gives every object an integer id using the IntIds utility, which helps making the catalog so clean. IntIds rock!
On the Zope 3 project that I'm getting ready to work on, I'll be dealing with the Zope 3 catalog for the first time. I'm actually looking forward to it. I'd like to see how well the whole process of writing an indexed application in Zope 3 works. Implementing against the ZODB is so nightmarishly easy, and it's nice to tinker with on my desktop without my having to worry about installing an RDBMS, adapters, and so on.