On 28.03.2007, at 13:19, Dominique Lederer wrote:


I want to index a field from an object, which works perfectly via Catalog and
Field Index.

But if my callable field returns a value, which is returned from an adapter of
the object, things get complicated for me:

i create my object an add it to a container (not via zmi).
i do the notify(ObjectCreatedEvent(container[myobjectname]) thing, to let the
intid and catalog do their indexing stuff.

i am not sure, but try to fire the objectcreatedevent directly after creating the object and then add it to the container, this causes the indexing with objectaddedevent which is fired by the container

i look at the Catalog statistics in the zmi, where is see, that one item is indexed.
but when i delete the object (i used
notifiy(ObjectRemovedEvent(container[myobjectname])), there is still something residing in the index, which causes a KeyError in the intid utility, when it
trys to getObject.

object removedevent is fired by the container, you dont have to fire it

It seems, that the index is indexing the object and the adapter via the same unique intid, and then deletes only the objects index, and not the adapter?

since my adapter is only accessing annotations on the object, i could feed the index directly via the annotation value, but that goes against the use of
adapters and the idea, not to change the object implementation.

Do you have any idea, what i have to do?
Did i forget an event? or something else?

cheers Dominique
Zope3-users mailing list

Zope3-users mailing list

Reply via email to