【发布时间】:2011-10-25 06:07:50
【问题描述】:
我正在开发一个package,其中包括一个使用 plone.app.registry 创建的控制面板。我关注了Timo's tutorial,但在尝试向其中添加额外记录时,我遇到了臭名昭著的KeyError:没有记录的字段。
所以我有几个关于最佳实践的问题:
我的第一个问题是:一个包必须在卸载时删除它的注册表?
我在我的包的 registry.xml 中使用了这个:
<registry>
<records interface="collective.nitf.controlpanel.INITFSettings" />
</registry>
这在 metadata.xml 上:
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.registry:default</dependency>
</dependencies>
</metadata>
但在卸载配置文件上添加 delete="true" 似乎不起作用。我也尝试按名称列出所有记录,但没有成功,除非我在 ZMI 手动运行该步骤。
那么,我的第二个问题是:如何在卸载时优雅地删除控制面板记录?
为了测试记录是否在注册表中,我执行以下操作:
def setUp(self):
self.portal = self.layer['portal']
setRoles(self.portal, TEST_USER_ID, ['Manager'])
# Set up the NITF settings registry
self.registry = Registry()
self.registry.registerInterface(INITFSettings)
def test_record_sections(self):
# Test that the sections record is in the control panel
record_sections = self.registry.records[
'collective.nitf.controlpanel.INITFSettings.sections']
self.failUnless('sections' in INITFSettings)
self.assertEquals(record_sections.value, set([]))
第三个问题可能是如何测试记录是否在未安装时被删除。
还有其他推荐吗?
【问题讨论】:
标签: registry plone uninstallation