Plone API从组中删除用户似乎不起作用

Plone API从组中删除用户似乎不起作用,plone,Plone,我正在尝试使用Plone.Api方法(在Plone4中)从组中删除所有用户。 所以我写了这段代码: users = api.user.get_users(groupname="The Test Group") for user in users: api.group.remove_user(groupname="The Test Group", username=user.id) 但是api.group.remove_用户调用似乎不起作用。从plone内的组中删除用户的正确方法是什么

我正在尝试使用Plone.Api方法(在Plone4中)从组中删除所有用户。 所以我写了这段代码:

users = api.user.get_users(groupname="The Test Group")
for user in users:
    api.group.remove_user(groupname="The Test Group", username=user.id)
但是api.group.remove_用户调用似乎不起作用。从plone内的组中删除用户的正确方法是什么

我在我的
ipdb中暂停了此操作
以下是我通话的结果:

ipdb> api.group.get(groupname=group_name)
<GroupData at /Plone/portal_groupdata/groupname:61fbc50d623142d7887384d70f25358b used for     /Plone/acl_users/source_groups>
我再次尝试删除呼叫,并检查我的成员是否仍在组中

ipdb> api.user.get_users(groupname=group_name)
[<MemberData at /Plone/portal_memberdata/stolas@domain.org used for /Plone/acl_users>]
ipdb>api.user.get\u用户(groupname=group\u名称)
[]
我还是。。 我应该重新编制安全索引或类似的东西吗

附言

我还尝试了使用api.env.adoption_roles(['Manager'])
getToolByName(getSite(),'portal_groups')
方法
portal\u group.removePrincipalFromGroup
所有呈现为false的内容。

plone.api使用组工具删除组成员身份:

portal\u group=portal.get\u工具(“portal\u group”)
portal\u groups.removePrincipalFromGroup(用户id,组id)
我猜您的
api.user.get\u users(groupname=“测试组”)
调用返回一个空集。 因为您应该传递组名(组ID)。现在你通过小组标题

api.group.remove\u用户
也将接受组对象而不是组名称

Arguments ``groupname`` and ``group`` are mutually exclusive. You can
either set one or the other, but not both.

由于我无法以用户身份删除它,我想到了以下几点:

    with api.env.adopt_roles(['Manager']):
        api.user.delete(user=self.context)
        parent = self.context.getParentNode()
        parent.manage_delObjects([self.context.getId()])

由于用户删除可能失败,我以管理员身份删除了对象。这似乎工作顺利。

get\u users组不是空的。我发送的名称实际上是id,100%经过测试并确定。也许我应该尝试解析组对象。你能尝试使用不带空格的id吗?请参阅问题中的编辑以了解我的尝试。id没有空格。嗯。。。但是您可以通过ZMI或Plone配置面板删除组成员身份?作为管理员,我似乎无法单击复选框在组删除位置选择组。这似乎是一个工作流问题。不允许您的当前用户删除。
Arguments ``groupname`` and ``group`` are mutually exclusive. You can
either set one or the other, but not both.
    with api.env.adopt_roles(['Manager']):
        api.user.delete(user=self.context)
        parent = self.context.getParentNode()
        parent.manage_delObjects([self.context.getId()])