gpt4 book ai didi

Plone 4 : List members that have been given Reviewer role on a specific folder

转载 作者:行者123 更新时间:2023-12-01 09:58:14 24 4
gpt4 key购买 nike

我为文件夹创建了一个新 View (基于表格 View ),只有标题和日期供普通查看者使用,但如果登录用户具有“编辑者”角色,它会显示一个附加列。该列需要列出已被赋予该特定项目“审阅者”角色的用户。例如,列将是:

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>

当我有 roles=['Member'] 时,它会起作用,但如果我将其更改为“审阅者”,我什么也得不到 - 我认为是因为没有人被指定为整个站点的审阅者,仅针对特定项目。我也尝试过以各种方式使用 .listMembers() ,但它似乎受到限制,我不能在页面模板中使用它。有没有办法解决这个问题,或者这是首先解决这个问题的“错误方法”?

最佳答案

我在 2 天前回答了一个几乎相同的问题:

List folders that a user has Reviewer access to in Plone 4

更新后的代码应该是这样的:

from Products.CMFCore.utils import getToolByName

portal_url = getToolByName(context, "portal_url")
portal = portal_url.getPortalObject()
acl_users = portal.acl_users

res = []

local_roles = acl_users._getLocalRolesForDisplay(context)
for name, roles, rtype, rid in local_roles:
if 'Reviewer' in roles:
res.append((name,roles,rtype,rid))

我建议将这种逻辑放在文件 python 中而不是页面模板中。

关于 Plone 4 : List members that have been given Reviewer role on a specific folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com