注销浏览器层

Unregister browser layer

在一个 Plone 站点中,我删除了一个产品,但它的浏览器层仍然注册(在日志中引发一些异常)

2015-09-10T06:00:32 WARNING OFS.Uninstalled Could not import class 'ICollectiveMailchimp' from module 'collective.mailchimp.interfaces'

我尝试使用 plone.browserlayer.utils.unregister_layer 删除此图层,但它向我发送了 KeyError 异常:

>>> pprint(utils.registered_layers())
[.
 .
 .
 <InterfaceClass collective.mailchimp.interfaces.ICollectiveMailchimp>,
 <InterfaceClass collective.liveblog.interfaces.IBrowserLayer>,
 <InterfaceClass collective.blueline.interfaces.IBrowserLayer>]
>>> layer = utils.registered_layers()[-3]
>>> layer
<InterfaceClass collective.mailchimp.interfaces.ICollectiveMailchimp>
>>> layer.__name__
'ICollectiveMailchimp'
>>> utils.unregister_layer(layer)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/cartacapital/cartacapital.portal.buildout/eggs/plone.browserlayer-2.1.3-py2.7.egg/plone/browserlayer/utils.py", line 38, in unregister_layer
    raise KeyError("No browser layer with name %s is registered." % name)
KeyError: 'No browser layer with name <InterfaceClass collective.mailchimp.interfaces.ICollectiveMailchimp> is registered.'
>>> utils.unregister_layer(layer.__name__)
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/cartacapital/cartacapital.portal.buildout/eggs/plone.browserlayer-2.1.3-py2.7.egg/plone/browserlayer/utils.py", line 38, in unregister_layer
    raise KeyError("No browser layer with name %s is registered." % name)
KeyError: 'No browser layer with name ICollectiveMailchimp is registered.'

在取消注册之前是否需要重新注册该图层?

哦..我使用了错误的名称来注销它..这解决了我的问题:

utils.unregister_layer(name='collective.mailchimp')

谢谢