Function
zope.publisher.browser.applySkin

Signature

applySkin(request, skin)

Documentation String

Change the presentation skin for this request.

>>> import pprint
>>> from zope.interface import Interface
>>> class SkinA(Interface): pass
>>> directlyProvides(SkinA, IBrowserSkinType)
>>> class SkinB(Interface): pass
>>> directlyProvides(SkinB, IBrowserSkinType)
>>> class IRequest(Interface): pass
>>> class Request(object):
...     implements(IRequest)
>>> req = Request()
>>> applySkin(req, SkinA)
>>> pprint.pprint(list(providedBy(req).interfaces()))
[<InterfaceClass zope.publisher.browser.SkinA>,
 <InterfaceClass zope.publisher.browser.IRequest>]
>>> applySkin(req, SkinB)
>>> pprint.pprint(list(providedBy(req).interfaces()))
[<InterfaceClass zope.publisher.browser.SkinB>,
 <InterfaceClass zope.publisher.browser.IRequest>]

Changing the skin on a request triggers the ISkinChanged event:

>>> import zope.component
>>> from zope.publisher.interfaces.browser import ISkinChangedEvent
>>> def receiveSkinEvent(event):
...     print event.request
>>> zope.component.provideHandler(receiveSkinEvent, (ISkinChangedEvent,))
>>> applySkin(req, SkinA)   # doctest: +ELLIPSIS
<zope.publisher.browser.Request object at 0x...>

Make sure our registrations go away again.

>>> from zope.testing.cleanup import cleanUp
>>> cleanUp()