为Zope本地站点和实用程序提供类似Grok的配置
项目描述
此包提供在 Python 中(无需 ZCML)直接编写本地站点和 Zope 实用工具的支持。
设置 grokcore.site
此包的基本设置类似于 grokcore.component 包,请参阅其文档以获取详细信息。您需要的唯一附加 ZCML 行是
<include package="grokcore.site" />
将此放在根 ZCML 文件顶部附近,但在包含 grokcore.component 配置的行下面。
示例
全局实用工具已由 grokcore.component 管理。
这里是一个简单的本地实用工具示例
from zope.interface import implements, Interface import grokcore.site class IKangaroo(Interface): def jump(): """Make all kangaroos jump somewhere. """ class KangarooUtility(grokcore.site.LocalUtility): implements(IKangaroo) def jump(self): pass
现在,我们可以将我们的实用工具注册到本地站点。这将自动创建并注册该实用工具,当创建该站点时
class Jungle(grokcore.site.Site): grokcore.site.local_utility(KangarooUtility, IKangaroo)
如果您不添加最后一行,您仍然会有您的站点,但没有使其跳起来袋鼠的东西。然后,您可以在之后手动添加(如果您想的话)。
API 概览
基类
- 站点
您站点的基类。
- LocalUtility
持久化本地实用工具的基类。
指令
- local_utility(factory, provides=None, name=u'', setup=None, public=False, name_in_container=None)
在站点上用于在创建时注册本地实用工具的指令
- factory
将是注册的组件(必需参数),
- provides
将是用于查询本地实用工具的接口(必需参数),
- name
将是用于查询本地实用工具的名称,
- setup
将是一个带有参数的函数。如果定义了它,它将在实用工具创建后以它作为第一个和唯一参数调用。
- public
如果为真,实用工具将创建在站点容器本身中,而不是在站点管理器中,并且公众可以直接访问它。
- name_in_container
将用作创建的实用工具在容器中的 ID。如果没有定义,它将请求 NameChooser 为其选择一个名称。
此外,grokcore.site 包公开了 grokcore.component API。
变更
4.0 (2023-07-11)
停止对 Python 2.7、3.5、3.6 的支持。
添加对 Python 3.9、3.10、3.11 的支持。
将代码调整为 zope.site >= 4.4,因此至少需要该版本。(#7)
3.1 (2020-09-02)
修复弃用警告。
停止对 Python 3.4 的支持,并添加对 3.7 和 3.8 的支持。
3.0.3 (2018-01-12)
重新排列测试,以便 Travis CI 可以选择所有功能测试。
3.0.2 (2018-01-11)
不再从 zope.site.hooks 导入 getSite,而是从 zope.component.hooks 导入。
3.0.1 (2018-01-10)
通过删除 ZODB3 修复依赖关系。
3.0.0 (2018-01-05)
Python 3 兼容性。
1.8 (2016-09-21)
在删除站点时,请确保从父站点中删除引用。
1.7.1 (2016-01-29)
更新测试。
1.7 (2015-06-11)
添加一个新的指令 install_on,该指令可在站点上使用。此指令允许您自定义何时(即事件)安装配置的本地站点。
将 ApplicationInitializedEvent 重命名为 ApplicationAddedEvent。
当触发 IApplicationAddedEvent 时,新应用程序将成为当前的 Zope 本地站点。事件后恢复站点。
1.6.1 (2012-05-02)
公开 ApplicationInitializedEvent 和 IApplicationInitializedEvent。
添加了公开 IApplication 接口所需的缺失导入。
1.6 (2012-05-01)
将指令 site 从 Grok 移动到本包。
将组件 Application 及所有相关实用工具从 Grok 移动到本包。
1.5 (2011-01-03)
将 IApplication 和 getApplication 从 Grok 包移动到本包。
1.4 (2010-11-01)
提高对 Martian 和 grokcore.component 的版本要求。
1.3 (2010-10-18)
使包符合存储库策略。
更新功能测试以仅使用 zope.app.appsetup 而不是 zope.app.testing。
更新功能测试不再需要 zope.app.zcmlfiles。
1.2 (2009-12-20)
将导入从 zope.app.component 迁移到 zope.site。
1.1 (2009-09-18)
更新依赖项(添加缺失的依赖项并添加单独的测试依赖项)。
本地实用工具现在实现了 IAttributeAnnotatable。
更新来自 Grok 自身的代码文档。
在 Grok 的发布信息中使用 1.0b2 版本的 versions.cfg,而不是本地副本;所有 grokcore 包的本地副本都太难维护。
1.0.1 (2009-06-30)
重新上传到 PyPI,使用没有 distutils 错误的正确版本的 Python。
1.0 (2009-06-29)
通过从 Grok 中提取基于本地站点的组件、grokkers 和指令创建 grokcore.site。