Source code for pyams_utils.include

#
# Copyright (c) 2015-2019 Thierry Florac <tflorac AT ulthar.net>
# 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.
#

"""PyAMS_utils.include module

This module is used for Pyramid integration
"""

import os.path

from chameleon import PageTemplateFile
from persistent import IPersistent
from zope.annotation import IAttributeAnnotatable, IAnnotations
from zope.annotation.attribute import AttributeAnnotations
from zope.keyreference.interfaces import IKeyReference
from zope.keyreference.persistent import KeyReferenceToPersistent

import pyams_utils
from pyams_utils.container import ParentSelector
from pyams_utils.context import ContextSelector
from pyams_utils.i18n import set_locales
from pyams_utils.request import RequestSelector, get_annotations, get_debug, get_display_context
from pyams_utils.tales import ExtensionExpr
from pyams_utils.traversing import NamespaceTraverser


__docformat__ = 'restructuredtext'


[docs]def include_package(config): """Pyramid package include""" # add translations config.add_translation_dirs('pyams_utils:locales') # define locales set_locales(config.registry.settings) # add request properties config.add_request_method(get_annotations, 'annotations', reify=True) config.add_request_method(get_debug, 'debug', reify=True) config.add_request_method(get_display_context, 'display_context', property=True) # define namespace traverser config.add_traverser(NamespaceTraverser) # add custom subscriber predicates to support events via supported interfaces config.add_subscriber_predicate('context_selector', ContextSelector) config.add_subscriber_predicate('parent_selector', ParentSelector) config.add_subscriber_predicate('request_selector', RequestSelector) # load components into registry config.registry.registerAdapter(AttributeAnnotations, (IAttributeAnnotatable, ), IAnnotations) config.registry.registerAdapter(KeyReferenceToPersistent, (IPersistent, ), IKeyReference) config.scan() if hasattr(config, 'load_zcml') and \ os.path.exists(os.path.join(pyams_utils.__path__[0], 'configure.zcml')): config.load_zcml('configure.zcml') PageTemplateFile.expression_types['tales'] = ExtensionExpr