plonegenericsetup

How to register a browser layer programmatically


I know that a browser layer can be registered using GenericSetup and one XML file, but I need to make it programmatically.

Is this possible?


Solution

  • Here you go:

    >>> 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
    

    Copied from https://github.com/plone/plone.browserlayer/blob/master/plone/browserlayer/README.rst

    If you just want to have a browser layer present in a test request, you can use the ZCA and directly provide the browser layer interface to a test request:

    from zope.interface import directlyProvides
    from my.product.interfaces import IMyProductBrowserLayer
    directlyProvides(self.request, IMyProductBrowserLayer)