Я работаю над пакетом, который включает панель управления, созданную с помощью plone.app.registry. Я следовал руководству Тимо но при попытке добавить в него дополнительную запись я сталкиваюсь с печально известным KeyError: поле, для которого нет записи.
Итак, у меня есть пара вопросов о лучших практиках:
Мой первый вопрос: пакет должен удалить свой реестр во время удаления?
Я использовал это в реестре.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([]))
Третий вопрос может заключаться в том, как проверить, была ли запись удалена в неустановленное время.
Любая другая рекомендация?