2014-12-17 2 views
1

Я пытаюсь создать список настраиваемых папок с быстрыми ссылками на действия с документом для объекта в папке.Действия 'object_buttons' для объекта

Чтобы загрузить действия, определенные для данного объекта obj я делаю в представлении браузера для папки:

portal_actions = getToolByName(self.context, 'portal_actions') 
actions = portal_actions.listActionInfos(object=obj, categories=('object_buttons',)) 

Но по какой-то причине actions всегда содержит только Copy действие. Удалить объект, Переименовать и так далее. При использовании пользовательского интерфейса Plone с одним и тем же пользователем (диспетчером) я могу получить доступ ко всем действиям для объекта I.

Эксперимент с новыми фиктивными действиями показал, что источником проблемы должно быть разрешение и проверка состояния listActionInfos. Но здесь я застрял ... Сравнение контекстов оценки, используемых для проверки разрешений и выражений условий для действий, не выявило существенных различий между вызовами из представления браузера и обычным пользовательским интерфейсом Plone для объекта.

В чем может быть проблема?

ответ

0

Я нашел источник проблемы.

Опубликованный код работает очень хорошо, но мне удалось убедить систему безопасности Zope использовать другую, менее привилегированную роль, чем фактическая роль для моего представления. Каким-то образом построение другого объекта просмотра браузера в методе представления __init__ привело к этому странному поведению.

Смежные вопросы