我有需要更改其所有权的内容。默认情况下,内容类型的所有者是admin,来自代码obj.getOwner()
,但内容类型的创建者不是admin,例如。someuser@samplemail.com。在
我访问了这个链接:http://developer.plone.org/content/ownership.html,并为内容类型创建了一个视图方法。以下是我的代码片段:
def change_owner(self):
membership = getToolByName(self.context,'portal_membership')
path='/'.join(self.context.getPhysicalPath())
brains=self.portal_catalog.searchResults(path={'query':path,'depth':0})
for brain in brains:
creator = brain.Creator
crtor_obj = membership.getMemberById(crtor1).getUser()
brain.getObject().setCreators(creator,)
brain.getObject().changeOwnership(crtor_obj)
brain.getObject().reindexObjectSecurity()
return
我的代码似乎没有改变内容的所有权。所有者仍然是管理员,创建者仍然是原始创建者。我的代码有问题吗?在
我看到了三个问题:
您反复调用
getObject()
。这是一个相对昂贵的操作,请将结果缓存到局部变量中:您使用一个参数而不是列表调用了
^{2美元setCreators()
:您不会更改
Owner
角色:有一个^{} product 为您处理所有这些细节。在
你看了plone.app.changeownership了吗?在
在
plone_utils
中有一个帮助函数changeOwnershipOf(self, object, userid, recursive=0, REQUEST=None)
,它为您完成所有这些事情。在(可通过未曝光
change_ownership
形式找到。)相关问题 更多 >
编程相关推荐