I really don't understand this code, so maybe I'm missing something here, but
anyone know wtf the opaqueItem code does in CMFCore.CMFCatalogAware?!

Why does the opaqueItems method iterate through *every* attribute in the root of
the site causing all objects (including, at least in plone) all sub-objects of
folders to be woken up too):

    for name in self_base.__dict__.keys():
            obj = getattr(self, name)
            if ICallableOpaqueItem.providedBy(obj) \
                    or z2ICallableOpaqueItem.isImplementedBy(obj):
                items.append((obj.getId(), obj))

If it is looking for opaque items (I still don't know what these really are)
then why does it look in content objects too?!

How about the changes below?

    objectids = dict([(x,1) for x in self.objectIds()])                        
         
    for name in self_base.__dict__.keys():
        if name not in objectids:                                              
         
            obj = getattr(self, name)
            if ICallableOpaqueItem.providedBy(obj) \
                    or z2ICallableOpaqueItem.isImplementedBy(obj):
                items.append((obj.getId(), obj))

(that was probably all wrapped to hell)

Basically, I've got a production site which loads up several tens of thousands
of objects from the ZODB just to display the front page.  Madness.

-Matt

-- 
Matt Hamilton                                       ma...@netsight.co.uk
Netsight Internet Solutions, Ltd.           Understand. Develop. Deliver
http://www.netsight.co.uk                             +44 (0)117 9090901
Web Design | Zope/Plone Development & Consulting | Co-location | Hosting

_______________________________________________
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests

Reply via email to