未发布时更改Plone中对象的id

未发布时更改Plone中对象的id,plone,Plone,在我们的用例中,如果修改了未发布对象的标题,我们希望根据新标题更改其id 我们尝试使用一个简单的订户来完成它,但没有成功: ZCML: Python: #-*-编码:utf-8-*- 从plone导入api 从plone.i18n.normalizer.interfaces导入IIDNormalizer 从zope.component导入查询功能 def更新_id(obj,事件): state=api.content.get_state(obj) 如果状态!='二等兵: 返回 util=qu

在我们的用例中,如果修改了未发布对象的标题,我们希望根据新标题更改其id

我们尝试使用一个简单的订户来完成它,但没有成功:

ZCML:


Python:

#-*-编码:utf-8-*-
从plone导入api
从plone.i18n.normalizer.interfaces导入IIDNormalizer
从zope.component导入查询功能
def更新_id(obj,事件):
state=api.content.get_state(obj)
如果状态!='二等兵:
返回
util=queryUtility(IID规范化器)
new_id=util.normalize(obj.Title())
api.content.rename(obj=obj,new\u id=new\u id,safe\u id=True)
obj.reindexObject()

当这个代码运行时,我们会得到一个ResourceLockedError异常

你订阅了哪个事件?顺便说一句,你所做的可能会破坏你的网站。考虑修改后的内容下面的10000个对象(如果是FLUDERY)。如果没有找到:-)@gforcada zope.lifecycleevent.IObjectModifiedEvent