Я знаю, что слой браузера можно зарегистрировать с помощью GenericSetup и одного XML-файла, но мне нужно сделать это программно.
Это возможно?
Я знаю, что слой браузера можно зарегистрировать с помощью GenericSetup и одного XML-файла, но мне нужно сделать это программно.
Это возможно?
Ну вот:
>>> from plone.browserlayer.tests.interfaces import IMyProductLayer
>>> from plone.browserlayer import utils
>>> IMyProductLayer in utils.registered_layers()
False
>>> utils.register_layer(IMyProductLayer, name='my.product')
>>> IMyProductLayer in utils.registered_layers()
True
Скопировано с https://github.com/plone/plone.browserlayer/blob/master/plone/browserlayer/README.rst
Если вы просто хотите, чтобы уровень браузера присутствовал в тестовом запросе, вы можете использовать ZCA и напрямую предоставить интерфейс уровня браузера для тестового запроса:
from zope.interface import directlyProvides
from my.product.interfaces import IMyProductBrowserLayer
directlyProvides(self.request, IMyProductBrowserLayer)