Лучшие практики для панелей управления Plone - PullRequest
5 голосов
/ 11 августа 2011

Я работаю над пакетом , который включает панель управления, созданную с помощью plone.app.registry. Я следовал учебнику Тимо , но, пытаясь добавить к нему дополнительную запись, я сталкиваюсь с печально известным 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([]))

Третий вопрос может состоять в том, как проверить, была ли удалена запись в одно время.

Любая другая рекомендация?

Ответы [ 2 ]

5 голосов
/ 12 августа 2011

Примечание: я еще не использовал plone.app.registry непосредственно в пакете.

Мой первый вопрос: пакет должен удалить свой реестр во время удаления?*

Да.По крайней мере, кажется разумным ожидать этого от авторов пакетов сообщества.Я хотел бы надеяться, что plone.app.registry не сработает из-за пропущенных вещей из старых удаленных пакетов, как это, кажется, здесь происходит, но это может быть сложно.Как удалить записи панели управления во время удаления изящно?

В большинстве файлов GenericSetup remove="True" работает.Не уверен насчет этого конкретного случая.

3 голосов
/ 12 августа 2011
My first question is: a package must remove it's registry at uninstall time?

Я не участвую в удалении вещей во время удаления, потому что иногда вы не хотите терять свою конфигурацию при переустановке ... для администратора сайта лучше использовать способ очистки реестра. Проведите тестирование на тестовом экземпляре, где вы не хотите потерять свои данные.

На второй вопрос уже ответили маврики, поэтому вам следует позаботиться о опечатке:

delete = "true"! = "Remove =" True "

...