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

时间:2016-06-06 17:43:12

标签: plone

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

我们尝试使用简单的订阅者完成它而没有成功:

ZCML:

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:zcml="http://namespaces.zope.org/zcml">

  <subscriber
      for="DummyContentType
           zope.lifecycleevent.IObjectModifiedEvent"
      handler=".subscriber.update_id"
      />

</configure>

的Python:

# -*- coding: utf-8 -*-
from plone import api
from plone.i18n.normalizer.interfaces import IIDNormalizer
from zope.component import queryUtility


def update_id(obj, event):
    state = api.content.get_state(obj)
    if state != 'private':
        return
    util = queryUtility(IIDNormalizer)
    new_id = util.normalize(obj.Title())
    api.content.rename(obj=obj, new_id=new_id, safe_id=True)
    obj.reindexObject()

当此代码运行时,我们得到 ResourceLockedError 异常

0 个答案:

没有答案