路径的Zope目录索引
项目描述
简介
这是一个Zope目录索引,用于通过路径查询ZODB中的树状结构。它支持深度限制,并且具有构建可用于导航树和网站图的结构的 ability。实际的导航树实现不(也不应该)在这个包中。这仅是索引实现。
假设
EPI关于目录和索引与所有内容位于同一容器中做出了假设。这在Plone设置中非常有意义,但在其他场景中可能不会按预期工作。
像/plonesite/folder, level=0这样的查询在内部被转换为/folder, level=1。这避免了触摸包含指向您网站中所有内容引用的相当大的plonesite集合。
功能
可以使用单个目录查询构建网站图
可以使用单个目录查询构建导航树
配置
在GenericSetup配置文件中,提供以下片段以创建索引
<index meta_type="ExtendedPathIndex" name="my_path"> <extra name="indexed_attrs" value="my_path" /> </index>
对于多值路径,提供一个额外的(关闭不必要的优化)
<index meta_type="ExtendedPathIndex" name="my_path"> <extra name="indexed_attrs" value="my_path" /> <extra name="multi_valued" value="True" /> </index>
具有每个路径元素多个值的索引示例:想象一下索引多语言内容。每个项目都被翻译,并且所有翻译的项目共享一个共同的唯一标识符(这就是plone.app.multilingual的工作方式)。现在创建一个返回此唯一标识符而不是项目ID作为路径元素的索引器。通过这种方式,可以一次查询文件夹中所有语言的所有元素(有关此模式的更高级用法,请参阅plone.app.multilingualindexes)。
用法
- catalog(path='some/path')
在some/path下搜索所有对象(递归,相当于深度=-1)
- catalog(path=dict(query='some/path', depth=0))
搜索给定路径的对象。对于多值路径,返回多个对象。
- catalog(path=dict(query='some/path', depth=2))
搜索some/path下的所有对象,但只到深度2
- catalog(path=dict(query='some/path', navtree=True))
搜索some/path下的所有对象以用于渲染导航树。这包括some/path下的所有对象,以及所有父对象,直到深度1。
- catalog(path=dict(query='some/path', navtree=True, depth=0))
搜索some/path下的所有对象以用于渲染面包屑导航。这仅包括父对象本身。
- catalog(path=dict(query='some/path', navtree=True, navtree_start=1))
搜索some/path下的所有对象以用于渲染部分导航树。这包括路径下的所有对象,但停止在根级别之上1级。给定的路径被包含在内,即使它在门户中的路径比级别参数允许的更短。
- catalog(path=dict(query='some/path', navtree=True, depth=0, navtree_start=1))
在某个路径下搜索所有对象以渲染部分面包屑路径。这包括路径下的所有父级,但停止在根目录之上的一级。即使给定路径在门户中的级别低于起始参数允许的级别,也会将其包含在内。
- catalog(path=dict(query='some/path', level=2))
搜索所有路径包含some/path且位于第2级的对象。这包括路径如/foo/bar/some/path和/spam/eggs/some/path,以及这些路径的所有子路径。
- catalog(path=dict(query='some/path', level=-1, depth=0))
搜索所有路径包含some/path且位于任何级别的对象。这包括路径如/spam/some/path以及/foo/bar/baz/some/path,但由于深度设置为0,只有那些精确匹配的结果被包含在内。
- catalog(path=dict(query=(('foo/bar', 2), ('bar/baz'), 1), depth=0))
搜索多个路径,每个路径位于不同的级别(foo/bar在第2级,bar/baz在第1级),并且只返回精确匹配的结果。
致谢
初始PathIndex代码由Zope Corporation提供
来自Jarn的Helge Tesdal和Martijn Pieters实现了ExtendedPathIndex
Alec Mitchell对navtree和列表优化做出了贡献
许可证
本软件基于GPLv2许可证发布。
变更日志
4.0.1 (2020-09-28)
错误修复
取消zc.buildout的锁定
将版本锁定到Zope 4(否则无法再构建Python 2.7版本)
更新tox.ini以与设置分类器保持一致
将Products.ZCatalog添加到setup.py的install_requires中,因为它不再是Zope核心的一部分(#17)
4.0.0 (2020-05-06)
重大变更
删除ZCatalog < 4的兼容性[jenens] (#15)
错误修复
修复EPI的IRO。[jenens] (#15)
3.4.2 (2019-05-01)
错误修复
避免弃用警告。[gforcada] (#10)
3.4.1 (2018-12-14)
错误修复
重新发布不进行更改以正确更新变更日志。(#7)
3.4.0 (2018-12-14)
新功能
支持“虚拟”路径的多值结果。[jenens] (#7)
3.3.1 (2018-09-23)
错误修复
修复setup.py中定义的依赖项。[gforcada]
3.3.0 (2018-01-17)
新功能
添加对Python 3的兼容性。
3.2.0 (2017-08-27)
新功能
添加对ZCatalog 4的IQueryIndex接口的前向兼容性。
3.1.1 (2016-07-29)
错误修复
使用zope.interface装饰器。[gforcada]
3.1 (2013-01-01)
行为不一致,因为只要输入路径长度短于或等于最长索引路径,就没有要求整个路径已索引。 [bosim]
3.0.1 - 2012-06-30
修复了当路径索引不是查询计划中的第一个索引时的深度限制搜索。[hannosch]。感谢Peter Mathis报告问题。
3.0 - 2012-04-26
修复了当父路径不在index_parents中时插入TypeError。[maurits]
在_index_parents中提供更好的保护以防止损坏内部数据。[hannosch]
通过从索引传递信息到unindex方法并避免另一个unindex扫描来稍微优化对象重新索引。[hannosch]
避免在index_object中确定长度更改时进行额外的unindex扫描。[hannosch]
声明支持新的ILimitedResultIndex接口,并要求至少Zope 2.13.0a3。[hannosch]
合并来自experimental.catalogqueryplan的优化。[hannosch]
PEP8清理和在un/index代码中的微小优化。[hannosch]
指定分发依赖项。[hannosch]
2.9 - 2010-07-18
将许可证更新为仅GPL版本2。[hannosch]
2.8 - 2010-05-01
不再直接依赖于PathIndex的测试内部。[hannosch]
2.7 - 2009-11-13
将AccessControl导入测试中,以避免在Zope 2.12中出现的循环导入问题。[davisagli]
2.6 - 2009-05-18
澄清许可证为仅GPL。[hannosch]
声明包依赖项并修复使用Globals的弃用警告。[hannosch]
2.5 - 2008年12月19日
清理测试:删除ZTC垃圾,将它们转换为正确的单元测试并删除测试其他非索引组件的测试。[mj]
修复了传递(path, level)元组而不是使用通用level参数的查询中的级别处理。[mj]
重构并记录了索引代码库。在过程中发现了几个错误并进行了修复。还添加了缺失的功能,所有搜索选项现在应该在所有场景下都能正常工作。[mj]
2.4.1 - 2008年9月28日
修复了setup.py中的拼写错误,这破坏了egg的安装[ree]
2.4 - 2006年9月11日
放宽了对路径的检查,目前只允许字符串。现在我们接受所有基本字符串。这解决了http://dev.plone.org/plone/ticket/5617。[hannosch]
将日志基础设施转换为使用Python的logging模块而不是zLOG。[hannosch]
2.3 - 2005年12月18日
当不正确的路径被编目时,添加了一些额外的调试信息。[sidnei]
2.2 - 2005年10月7日
在父路径和所有对象的完整路径上添加了单独的索引结构。这显著提高了导航树、面包屑和列表的扩展性。[alecm]
假设EPI与内容在同一容器中使用,并使用相对搜索而不是绝对搜索 - 实际上是将/plonesite搜索转换为/search,并将起始级别设置为1而不是0。[tesdal]
2.1 - 2005年5月20日
为ExtendedPathIndex实现“indexed_attrs”支持。
防止导航树查询在查询的路径实际上不在索引中,但其父级存在时提前停止。
1.0
能够从编目数据生成导航树结构的路径索引。
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
Products.ExtendedPathIndex-4.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5049bff145379d7db4a247dbf3661d1ab7cff2eeb02830a37e5a53c6d0863c63 |
|
MD5 | 32c62092a0939c6375f37e05a0f11305 |
|
BLAKE2b-256 | b7408d98b61ee6b4545a6d5ed8354bccd506fa301a0e51feccccf8707f28164b |
Products.ExtendedPathIndex-4.0.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 92f826b7b129f9dcf8fb662f8c7504d07a5ff64fc38f3ecdc85376298bf726bd |
|
MD5 | f905ad296fa05d973b25f5fcaa850f2d |
|
BLAKE2b-256 | c9b8d2a05d27a9a36e2202005a6323670ee0166f60670aaeefd9cfcb65dcd84e |