Я создал новое представление для папки (на основе табличного представления), единственное название и дата для обычных пользователей, но если вошедший в систему пользователь имел роль «Редактор», он показывает дополнительный столбец.В этом столбце должен быть указан список пользователей, которым была назначена роль «Рецензент».Например, столбцы будут иметь вид:
Title | Date | (Reviewers)
Folder 1 | 10/04 | Johnny, Steve, Mary Sue
Folder 2 | 10/13 | Sam, Betty, Johnny
Мне удалось скрыть / показать последний столбец на основе роли аутентифицированного пользователя, но я не могу понять, как перечислить толькопользователи, которые имеют доступ к рецензенту.Я пытался использовать searchForMembers (), но в дополнение к тому, что он очень медленный, я могу заставить его отображать только весь список участников или сузить его в зависимости от ролей всего сайта, но мне нужны только люди, которые были вручнуюданная роль рецензента в определенной папке.
Вот код для всего столбца:
<td tal:define="is_manager python:test(here.portal_membership.getAuthenticatedMember().has_role('Manager'), 1, 0);"
tal:condition="is_manager">
<tal:block tal:define="results python:item.portal_membership.searchForMembers(roles=['Member']);">
<tal:block tal:condition="results"
tal:repeat="user results">
<tal:block tal:define="fullname python:user.getProperty('fullname')">
<span tal:replace="fullname">Full Name</span><span>, </span>
</tal:block>
</tal:block>
</tal:block>
</td>
Это работает, когда у меня есть role = ['Member'], но если я изменяю его на«Рецензент» я ничего не получаю - я думаю, потому что никто не назначен рецензентом для всего сайта, только для определенных элементов.Я также пытался использовать .listMembers () различными способами, но кажется, что это ограничено, и я не могу использовать его в шаблоне страницы.Есть ли способ обойти это, или это "неправильный путь", чтобы пойти об этом в первую очередь?