/usr/share/pyshared/zope/publisher/zcml.py is in python-zope.publisher 3.12.6-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | ##############################################################################
#
# Copyright (c) 2001, 2002 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Default view and default skin ZCML configuration feature.
"""
from zope import component
from zope.component.interface import provideInterface
from zope.component.zcml import handler
from zope.configuration.fields import GlobalObject, GlobalInterface
from zope.interface import Interface
from zope.publisher.interfaces import IDefaultViewName
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.publisher.interfaces.browser import IBrowserSkinType
from zope.publisher.interfaces.browser import IDefaultSkin
from zope.schema import TextLine
class IDefaultSkinDirective(Interface):
"""Sets the default browser skin"""
name = TextLine(
title=u"Default skin name",
description=u"Default skin name",
required=True
)
class IDefaultViewDirective(Interface):
"""
The name of the view that should be the default.
This name refers to view that should be the
view used by default (if no view name is supplied
explicitly).
"""
name = TextLine(
title=u"The name of the view that should be the default.",
description=u"""
This name refers to view that should be the view used by
default (if no view name is supplied explicitly).""",
required=True
)
for_ = GlobalObject(
title=u"The interface this view is the default for.",
description=u"""Specifies the interface for which the view is
registered. All objects implementing this interface can make use of
this view. If this attribute is not specified, the view is available
for all objects.""",
required=False
)
layer = GlobalInterface(
title=u"The layer the default view is declared for",
description=u"The default layer for which the default view is "
u"applicable. By default it is applied to all layers.",
required=False
)
def setDefaultSkin(name, info=''):
"""Set the default skin.
>>> from zope.interface import directlyProvides
>>> from zope.app.testing import ztapi
>>> class Skin1: pass
>>> directlyProvides(Skin1, IBrowserSkinType)
>>> ztapi.provideUtility(IBrowserSkinType, Skin1, 'Skin1')
>>> setDefaultSkin('Skin1')
>>> adapters = component.getSiteManager().adapters
Lookup the default skin for a request that has the
>>> adapters.lookup((IBrowserRequest,), IDefaultSkin, '') is Skin1
True
"""
skin = component.getUtility(IBrowserSkinType, name)
handler('registerAdapter',
skin, (IBrowserRequest,), IDefaultSkin, '', info),
def defaultSkin(_context, name):
_context.action(
discriminator = 'defaultSkin',
callable = setDefaultSkin,
args = (name, _context.info)
)
def defaultView(_context, name, for_=None, layer=IBrowserRequest):
_context.action(
discriminator = ('defaultViewName', for_, layer, name),
callable = handler,
args = ('registerAdapter',
name, (for_, layer), IDefaultViewName, '', _context.info)
)
if for_ is not None:
_context.action(
discriminator = None,
callable = provideInterface,
args = ('', for_)
)
|