удаление объекта из индекса

10 views
Skip to first unread message

Vitaly

unread,
Jun 8, 2011, 5:48:46 AM6/8/11
to Russian Zope3 group
Доброе время суток!

Надеюсь что кто-нибудь сюда еще заглядывает.
Использую z3c.indexer, все работает хорошо, только вот проблема с
удалением объектов, даже не удаление, а unindex(obj).
Вываливается ошибка:
Module zope.intid:89 in getId
>> raise KeyError(ob)
KeyError: <... object at 0x37f9758>

При создании и изменении объекта (index(obj)) проблем нет, getId в
модуле zope.intid выдает id, а при unindex валится :(

Никто не встречался с этим?

Anatoly Bubenkov

unread,
Jun 8, 2011, 6:00:09 AM6/8/11
to zope...@googlegroups.com
On Wed, 2011-06-08 at 02:48 -0700, Vitaly wrote:

> Никто не встречался с этим?

скорее всего ты даешь объект проксированный, и прав не хватает
сними секьюрити прокси или разберись с правами

from zope.security.proxy import removeSecurityProxy

obj = removeSecurityProxy(obj)

--
Anatoly Bubenkov
+380(66)6358527
Zojax inc (http://zojax.com/)


Anatoly Bubenkov

unread,
Jun 8, 2011, 6:02:43 AM6/8/11
to zope...@googlegroups.com
хотя может ты просто не то событие используешь для unindex

Vitaly

unread,
Jun 8, 2011, 6:12:05 AM6/8/11
to Russian Zope3 group
Не секьюрность не причем.

Что самое интересное, так это что при одинаковых условиях doIndex в
классе наследуемом от z3c.indexer.indexer.MultiIndexer работает, а
doUnIndex не работает.
При этом я физически не удаляю объект, а только посылаю сообщение
zope.lifecycleevent.ObjectRemovedEvent.

Ничего не понимаю :(

Anatoly Bubenkov

unread,
Jun 8, 2011, 6:17:42 AM6/8/11
to zope...@googlegroups.com
ну вот, событие неверное
надо на intid IntIdRemovedEvent садиться
и посылать такое событие при этом не удалять физически довольно странно,
зачем?

Vitaly

unread,
Jun 8, 2011, 6:27:00 AM6/8/11
to zope...@googlegroups.com


и посылать такое событие при этом не удалять физически довольно странно,
зачем?


для отладки 

Anatoly Bubenkov

unread,
Jun 8, 2011, 6:32:37 AM6/8/11
to zope...@googlegroups.com
On Wed, 2011-06-08 at 03:27 -0700, Vitaly wrote:
>

>
> для отладки
>
если такая жесткая отладка, то в обработчике взвести исключение чтобы не
закоммитилась транзакция, но както это все не очень

Anatoly Bubenkov

unread,
Jun 8, 2011, 6:35:43 AM6/8/11
to zope...@googlegroups.com
в общем ошибка в типе ивента на котором ты сидишь

IntIdRemovedEvent взводится ведь в обработчике ObjectRemoved, потому
никакой гарантии что будет intid в твоем обработчике ObjectRemoved нет,
обработчики ведь не упорядочиваются,

Vitaly

unread,
Jun 8, 2011, 6:39:13 AM6/8/11
to zope...@googlegroups.com
ну хорошо, будем говорить не об удалении объекта из контейнера, а удалении его из ссылки.

Vitaly

unread,
Jun 8, 2011, 6:44:50 AM6/8/11
to zope...@googlegroups.com
спасибо, заработало :)

Anatoly Bubenkov

unread,
Jun 8, 2011, 6:44:59 AM6/8/11
to zope...@googlegroups.com
On Wed, 2011-06-08 at 03:39 -0700, Vitaly wrote:
> ну хорошо, будем говорить не об удалении объекта из контейнера, а
> удалении его из ссылки.
надо бы подробностей чтобы понять задачу изначальную
на конкретный вопрос по событию вроде ответил
Reply all
Reply to author
Forward
0 new messages