gpt4 book ai didi

registry - Plone 控制面板的最佳实践

转载 作者:行者123 更新时间:2023-12-04 17:56:51 24 4
gpt4 key购买 nike

我正在处理 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([]))

第三个问题可能是如何测试记录是否在非安装时间被删除。

还有其他推荐吗?

最佳答案

注意:我自己还没有直接在包中使用 plone.app.registry。

My first question is: a package must remove it's registry at uninstall time?



是的。至少从社区包的作者那里期待这一点似乎是合理的。我希望 plone.app.registry 不会因为从旧的删除包中丢失的东西而绊倒,就像它在这里做的那样,但这可能很棘手。

So, my second question is: how do I remove control panel records at uninstall time gracefully?



在大多数 GenericSetup 文件中 remove="True"作品。不确定这个特定案例。

关于registry - Plone 控制面板的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7031071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com