私はpackageに、plone.app.registryを使用して作成されたコントロールパネルが含まれています。私はTimo's tutorialを追跡しましたが、レコードを追加しようとすると悪名高いものに直面していますKeyError:レコードがないフィールド。Ploneコントロールパネルのベストプラクティス
だから私はベストプラクティスについての質問のカップルを持っている:
私の最初の質問は次のとおりです。パッケージには、それは、アンインストール時にレジストリのです削除する必要がありますか?
私は私のパッケージのregistry.xmlの中でこれを使用:にmetadata.xmlに
<registry>
<records interface="collective.nitf.controlpanel.INITFSettings" />
</registry>
と、この:
<metadata>
<version>1</version>
<dependencies>
<dependency>profile-plone.app.registry:default</dependency>
</dependencies>
</metadata>
しかし、アン・プロファイルに削除= "true" を追加することはないようです働くこと。 ZMIで手動でステップを実行しない限り、すべてのレコードを名前で列挙してみました。
だから、私の2番目の質問です:どのように私は正常にアンインストール時にコントロールパネルのレコードを削除しますか?
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([]))
3番目の質問は、レコードがunisntall時に削除されたかどうかをテストする方法が考えられます。
は、レコードは、レジストリ上にある場合、私はこのような何かをテストします。他のお勧めはありますか?
「真 "=を削除する"(のhttp://!は、PyPI .python.org /は、PyPI/plone.app.registry#plone.app.registryに)レコードを削除すると少し異なっており、私のために働いていない、あなたはこのような何かをする必要があります: <レコード名=」私は[インターフェイスに基づいて作成](http://pypi.python.org/pypi/plone.app.registry#にprefix属性を追加しようとしていた真の 『/> 「=を削除』 my.package.myRecordインターフェイス上でレコードを作成する)、しかしそれはドキュメントではあまり明確ではありません。 – hvelarde