/usr/share/pyshared/zope/viewlet/metadirectives.py is in python-zope.viewlet 3.7.2-0ubuntu4.
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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | ##############################################################################
#
# Copyright (c) 2004 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.
#
##############################################################################
"""Viewlet metadirective
$Id: metadirectives.py 112059 2010-05-05 19:40:35Z tseaver $
"""
__docformat__ = 'restructuredtext'
import zope.configuration.fields
import zope.schema
from zope.publisher.interfaces import browser
from zope.security.zcml import Permission
from zope.i18nmessageid import MessageFactory
from zope.interface import Interface
_ = MessageFactory('zope')
from zope.viewlet import interfaces
class IContentProvider(Interface):
"""A directive to register a simple content provider.
Content providers are registered by their context (`for` attribute), the
request (`layer` attribute) and the view (`view` attribute). They also
must provide a name, so that they can be found using the TALES
``provider`` namespace. Other than that, content providers are just like
any other views.
"""
view = zope.configuration.fields.GlobalObject(
title=_("The view the content provider is registered for."),
description=_("The view can either be an interface or a class. By "
"default the provider is registered for all views, "
"the most common case."),
required=False,
default=browser.IBrowserView)
name = zope.schema.TextLine(
title=_("The name of the content provider."),
description=_("The name of the content provider is used in the TALES "
"``provider`` namespace to look up the content "
"provider."),
required=True)
for_ = zope.configuration.fields.GlobalObject(
title=u"The interface or class this view is for.",
required=False
)
permission = Permission(
title=u"Permission",
description=u"The permission needed to use the view.",
required=True
)
class_ = zope.configuration.fields.GlobalObject(
title=_("Class"),
description=_("A class that provides attributes used by the view."),
required=False,
)
layer = zope.configuration.fields.GlobalInterface(
title=_("The layer the view is in."),
description=_("""
A skin is composed of layers. It is common to put skin
specific views in a layer named after the skin. If the 'layer'
attribute is not supplied, it defaults to 'default'."""),
required=False,
)
allowed_interface = zope.configuration.fields.Tokens(
title=_("Interface that is also allowed if user has permission."),
description=_("""
By default, 'permission' only applies to viewing the view and
any possible sub views. By specifying this attribute, you can
make the permission also apply to everything described in the
supplied interface.
Multiple interfaces can be provided, separated by
whitespace."""),
required=False,
value_type=zope.configuration.fields.GlobalInterface(),
)
allowed_attributes = zope.configuration.fields.Tokens(
title=_("View attributes that are also allowed if the user"
" has permission."),
description=_("""
By default, 'permission' only applies to viewing the view and
any possible sub views. By specifying 'allowed_attributes',
you can make the permission also apply to the extra attributes
on the view object."""),
required=False,
value_type=zope.configuration.fields.PythonIdentifier(),
)
class ITemplatedContentProvider(IContentProvider):
"""A directive for registering a content provider that uses a page
template to provide its content."""
template = zope.configuration.fields.Path(
title=_("Content-generating template."),
description=_("Refers to a file containing a page template (should "
"end in extension ``.pt`` or ``.html``)."),
required=False)
class IViewletManagerDirective(ITemplatedContentProvider):
"""A directive to register a new viewlet manager.
Viewlet manager registrations are very similar to content provider
registrations, since they are just a simple extension of content
providers. However, viewlet managers commonly have a specific provided
interface, which is used to discriminate the viewlets they are providing.
"""
provides = zope.configuration.fields.GlobalInterface(
title=_("The interface this viewlet manager provides."),
description=_("A viewlet manager can provide an interface, which "
"is used to lookup its contained viewlets."),
required=False,
default=interfaces.IViewletManager,
)
class IViewletDirective(ITemplatedContentProvider):
"""A directive to register a new viewlet.
Viewlets are content providers that can only be displayed inside a viewlet
manager. Thus they are additionally discriminated by the manager. Viewlets
can rely on the specified viewlet manager interface to provide their
content.
The viewlet directive also supports an undefined set of keyword arguments
that are set as attributes on the viewlet after creation. Those attributes
can then be used to implement sorting and filtering, for example.
"""
manager = zope.configuration.fields.GlobalObject(
title=_("view"),
description=u"The interface of the view this viewlet is for. "
u"(default IBrowserView)",
required=False,
default=interfaces.IViewletManager)
# Arbitrary keys and values are allowed to be passed to the viewlet.
IViewletDirective.setTaggedValue('keyword_arguments', True)
|