Function
zope.publisher.browser.setDefaultSkin

Signature

setDefaultSkin(request)

Documentation String

Sets the default skin for the request.

The default skin is a marker interface that can be registered as an adapter that provides IDefaultSkin for the request type.

If a default skin is not available, the default layer (IDefaultBrowserLayer) is used.

To illustrate, we'll first use setDefaultSkin without a registered IDefaultSkin adapter:

>>> class Request(object):
...     implements(IBrowserRequest)
>>> request = Request()
>>> IDefaultBrowserLayer.providedBy(request)
False
>>> setDefaultSkin(request)
>>> IDefaultBrowserLayer.providedBy(request)
True

When we register a default layer, however:

>>> from zope.interface import Interface
>>> class IMySkin(Interface):
...     pass
>>> zope.component.provideAdapter(IMySkin, (IBrowserRequest,),
...                               IDefaultSkin)

setDefaultSkin uses the layer instead of IDefaultBrowserLayer.providedBy:

>>> request = Request()
>>> IMySkin.providedBy(request)
False
>>> IDefaultSkin.providedBy(request)
False
>>> setDefaultSkin(request)
>>> IMySkin.providedBy(request)
True
>>> IDefaultBrowserLayer.providedBy(request)
False

Any interfaces that are directly provided by the request coming into this method are replaced by the applied layer/skin interface:

>>> request = Request()
>>> class IFoo(Interface):
...     pass
>>> directlyProvides(request, IFoo)
>>> IFoo.providedBy(request)
True
>>> setDefaultSkin(request)
>>> IFoo.providedBy(request)
False