删除Plone 5上的浏览器图层

时间:2016-02-18 18:53:51

标签: plone genericsetup plone-5.x

在以前的Plone版本中,QuickInstaller负责在卸载时自动删除一些东西;这是浏览器图层和资源注册表资源的情况。现在,在Plone 5中,最好的做法是包含一个GenericSetup配置文件,以明确卸载这些文件。

我接着Keul's blog post on uninstalls并在我的软件包卸载配置文件中添加了browserlayer.xml文件,如下所示:

<?xml version="1.0"?>
<layers>
  <layer name="collective.fingerpointing" remove="true" />
</layers>

但是我的包裹没有删除它。

任何提示?

代码位于:https://github.com/collective/collective.fingerpointing/pull/6

测试结果位于:https://travis-ci.org/collective/collective.fingerpointing/jobs/110195902

我只是完成了我的附加组件兼容性的一次测试!

2 个答案:

答案 0 :(得分:1)

要取消注册浏览器图层,将忽略该界面。只有浏览器图层名称很重要。这必须与之前注册浏览器层的名称相匹配。

答案 1 :(得分:1)

问题在于测试:我正在测试接口的名称,另一个包(在我的情况下,plone.app.event)有一个同名浏览器层(IBrowserLayer):< / p>

(Pdb) registered_layers()[4]
<InterfaceClass plone.app.event.interfaces.IBrowserLayer>

我正在使用它:

def test_addon_layer_removed(self):
    from plone.browserlayer.utils import registered_layers
    layers = [l.getName() for l in registered_layers()]
    self.assertNotIn('IBrowserLayer', layers)

我将其更改为以下内容:

def test_addon_layer_removed(self):
    from collective.fingerpointing.interfaces import IBrowserLayer
    from plone.browserlayer.utils import registered_layers
    self.assertNotIn(IBrowserLayer, registered_layers())

为什么选择合适的测试很重要。