[BlueBream] [Zope-dev] Reg. updating catalog indexes in bluebream

Christian Klinger cklinger at novareto.de
Fri Jun 24 06:17:03 EDT 2011


Hi,

what do you mean with "via zope.formlib AddForms's createAndAdd' method.

Do you override this method? If so this is wrong you only have to
add a create method which get's called before the object is persisted in 
the container. The createAndAdd method triggers then the catalog.

HTH Christian


> On Fri, 2011-06-24 at 00:12 +0200, Thierry Florac wrote:
>> You don't have to subscribe to IContainerModifiedEvent or
>> IObjectModifiedEvent: zope.intid and zope.catalog packages already
>> provide subscribers for these events to automatically handle updates
>> of indexes.
>>
>> What you have to do is just to generate an ObjectAddedEvent or
>> ObjectModifiedEvent when your object is added or modified, and notify
>> subscribers for it:
>
> When I add my object to its container via zope.formlib AddForm's
> createAndAdd method like this
>
>          cl = Client()
>          ...
>          self.context[cid] = cl
>
> (P.S: I didn't explicitly notify the ObjectAddedEvent.)
>
> In setitem function of zope.container.contained
> 'notify(ObjectAddedEvent)' happens, this causes the 'addIntIdSubscriber'
> adapter of zope.intid to be called. This in turn registers the 'Client'
> object and notifies for 'IntIdAddedEvent'.
>
> But I don't see the 'indexDocSubscriber' of zope.catalog.catalog which
> is the adapter for 'IIntIdAddedEvent' being called. Why is this so?
>
> So, sm['intids'] is getting updated as and when new objects are added
> but the catalog indexes are not getting updated. Am I missing something?
> Or is there any specific zcml configuration needed for this?
>
> Please guide me.
>
>




More information about the bluebream mailing list