Автоматическая установка типов контента по умолчанию в тестах на Plone 5

Я пытался добавить совместимость с Plone 5 в некоторые из наших надстроек, и я нашел шаблон, которого я хочу избежать: кажется, что мне нужно вручную устанавливать типы контента по умолчанию на тестовое устройство, как это:

...
PLONE_VERSION = api.env.plone_version()


class Fixture(PloneSandboxLayer):

    defaultBases = (PLONE_FIXTURE,)

    def setUpZope(self, app, configurationContext):
        if PLONE_VERSION >= '5.0':
            import plone.app.contenttypes
            self.loadZCML(package=plone.app.contenttypes)
        ...

    def setUpPloneSite(self, portal):
        if PLONE_VERSION >= '5.0':
            self.applyProfile(portal, 'plone.app.contenttypes:default')
        ...

FIXTURE = Fixture()
...

Есть ли способ избежать этого?

1 ответ

Решение

Насколько я помню, достаточно зависеть от PLONE_APP_CONTENTTYPES_FIXTURE. Примерно так (не проверено):

try:
    from plone.app.contenttypes.testing import PLONE_APP_CONTENTTYPES_FIXTURE
except ImportError:
    PLONE_APP_CONTENTTYPES_FIXTURE = None


class Fixture(PloneSandboxLayer):
    if PLONE_VERSION >= '5.0':
        defaultBases = (PLONE_APP_CONTENTTYPES_FIXTURE,)
    else:
        defaultBases = (PLONE_FIXTURE,)
Другие вопросы по тегам