简而言之,当我进入网站设置时 - >类型并尝试将图像的工作流程从“无工作流程”更改为任何其他工作流程,我收到以下错误:
Traceback (innermost last):
Module ZPublisher.Publish, line 126, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 46, in call_object
Module plone.app.controlpanel.types, line 165, in __call__
Module zope.event, line 31, in notify
Module zope.component.event, line 24, in dispatch
Module zope.component._api, line 136, in subscribers
Module zope.component.registry, line 321, in subscribers
Module zope.interface.adapter, line 585, in subscribers
Module plone.app.discussion.browser.controlpanel, line 181, in notify_configuration_changed
AttributeError: 'NoneType' object has no attribute 'forInterface'
我怀疑我们设置这个Plone实例的方式导致了这个问题。我们进行了4.0.8安装(分段),我们进行了初始站点构建。我们为生产设置了另一个4.0.8安装。在Staging上运行备份,并将Staging备份文件和blobstorage复制到Production。生产工作正常;似乎是分期的完美克隆。
稍后,我们想要转到4.1.1,因此我们在4.1.1上创建了另一个安装,并将上述过程从Production重复到我们的新实例。经过一天的测试,它似乎工作。很酷,我们现在有一个4.1.1生产箱。一周后,用户希望图像在与所有其他内容相同的工作流程(Intranet / Extranet)下运行,并且当我遇到错误时就是这样。
我可以通过ZMI portal_workflow工具更改工作流程,没有任何明显问题。
答案 0 :(得分:2)
查看product code,似乎当您更改contenttype的工作流程时,p.a.discussion产品会尝试更新其配置,但在您的实例中无法检索注册表。
作为一种快速解决方案,您可以尝试通过在您的某个产品的zcml中添加此代码来强制包含注册表:
<include package="plone.app.registry" />
然后:
1-转到zmi - &gt;您的网站并检查您的plone网站中是否存在名为“portal_registry”的项目
2-去zmi - &gt;您的网站 - &gt;选项卡“组件”并检查是否存在此注册:
<utility interface="plone.registry.interfaces.IRegistry"
object="portal_registry" />
答案 1 :(得分:1)
有同样的问题,可以通过导入配置文件'Configuration registry'的'管理配置注册表'和'Plone缓存'的步骤来解决它。