如何通过python代码添加门户角色

时间:2011-10-14 14:35:56

标签: plone roles

我正在使用plone 4.1,我需要通过代码创建一个门户网站角色,我找不到任何官方参考。

经过一些轻击,我发现了这个:

acl_users.portal_role_manager.addRole

这似乎创建了这个角色,但是在任何地方,安全选项卡或/@@ usergroup-userprefs上列出的角色中都没有角色。

然后我在门户对象上发现了一个“_addRole”(我认为它来自于鸡蛋/ Zope2-2.13.8-py2.6.egg / OFS / role.py)。

我在http://repositorio.interlegis.gov.br/ILSAAP/trunk/InstallUtils/installers/installRoles.py

中找到了这个用法

我正在使用

portal._addRole(new_role)
try:
    acl_users.portal_role_manager.addRole(new_role)
except:
    pass

有效! :)

使用真实用例是变形虫的特定蓝图:

https://github.com/simahawk/collective.blueprint.usersandgroups/blob/master/collective/blueprint/usersandgroups/blueprint.py#L62

问题是:这是要走的路吗?

1 个答案:

答案 0 :(得分:2)

角色存储在每个zodb对象中,因此您可以像这样修改

## Roles are store on __ac_roles__ attribute of object.
roles = list(portal.__ac_roles__)
roles += 'yournewrole'
portal.__ac_roles__ = tuple(roles)

我认为这对你的用例来说已经足够了。