加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

注册表 – Plone控制面板的最佳实践

发布时间:2020-12-14 02:02:58 所属栏目:Windows 来源:网络整理
导读:我正在研究 package,其中包括使用plone.app.registry创建的控制面板.我跟着 Timo’s tutorial但是,当我试图添加一条额外的记录时,我面临着臭名昭着的KeyError:一个没有记录的字段. 所以我对最佳实践有几个问题: 我的第一个问题是:一个包必须在卸载时删除
我正在研究 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”有效.对这个具体案例不确定.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读