跳转到主要内容

基于BTree的文件夹实现,支持排序

项目描述

plone.folder

概述

此包为基于B树(即Plone中的“大型文件夹”)的内容类型提供基类,这为存储提供了显著的性能优势。但是,“大型文件夹”默认不支持内容的显式排序。换句话说,您无法手动指定文件夹内项目的顺序,而只能从文件夹获取项目后根据给定标准排序。

然而,很多时候,人们希望能够显式排序文件夹的内容,例如对于与网站导航相关的项目。按字母顺序排序在这里通常没有意义。

为了弥补这一点,plone.folder通过上述基类为B树文件夹提供排序支持,该基类可以使用适配器存储实际的顺序信息。它还包含两个示例适配器实现

  • 一个默认适配器,用于处理文件夹中包含的所有对象的顺序信息。此适配器可用于构建与文件夹内容完全兼容的后向兼容替换方案。换句话说,使用此适配器后,基于B树的文件夹应表现得就像“常规”文件夹实现一样,同时提供一些性能优势。

  • 一个针对仅对一小部分内容(显式)顺序敏感的网站的目标适配器实现。它将只管理某些内容类型(通过标记接口)的顺序信息。

后者允许不必将此类内容与“不可排序”的内容分开。到目前为止,许多大型网站将“可排序”项(例如与导航相关的所有内容,通常只有少数几个)存储在常规文件夹中,而将大部分内容存储在“大型”文件夹中,通常仅出于性能原因。此适配器有望帮助避免在将来进行这种区分,同时仍提供B树文件夹更好的性能特征。

源代码

贡献者请阅读文档 Plone核心开发流程

源代码在 GitHub上的Plone代码仓库 中。

变更日志

4.0.1 (2024-01-22)

错误修复

  • 修复部分排序测试。[maurits] (#23)

内部

  • 更新配置文件。[plone devs] (55bda5c9, 6e36bcc4)

4.0.0 (2023-04-19)

破坏性更改

  • 停止支持python 2.7。[gforcada] (#1)

内部

  • 更新配置文件。[plone devs] (5cc689e5)

3.1.0 (2021-06-14)

新功能

  • 恢复Webdav支持。[frapell] (#16)

3.0.3 (2020-06-24)

错误修复

  • 对moveObjectsByDelta中经常调用的循环进行微优化。x in y 如果y是集合而不是列表,则速度可提高1000倍。[jensens] (#15)

3.0.2 (2020-04-20)

错误修复

  • 小型的打包更新。[#1]

3.0.1 (2019-10-12)

错误修复

    • 修复GopipIndex中documentToKeyMap的查找速度慢的问题。在某些情况下,速度提升可达66倍。这可能在大型导航树渲染时减少几秒钟。[jensens] (#14)

3.0.0 (2018-10-31)

破坏性更改

  • 将GopipIndex从plone.app.folder移动到plone.folder。[jmevissen, petschki]

错误修复

  • 修复删除未在排序注释中引用的对象时出现的KeyError。[vangheem]

2.0.1 (2018-09-23)

错误修复

  • 稳定无序项的局部排序顺序。[davisagli]

  • 修复Python 3中文件夹内容的排序。[pbauer]

  • 修复Python 3中的测试。[pbauer]

2.0.0 (2018-06-20)

破坏性更改

  • 停止支持Python 2.6/ Plone 4.3。[jensens]

错误修复

  • 提高Python 2 / 3的兼容性。[pbauer, ale-rt]

  • 修复过时的LazyMap导入。[jensens]

1.0.11 (2018-04-08)

新功能

  • 在有序索引不一致的情况下改进日志记录。[tomgross]

错误修复

  • 删除古老的buildout配置。[tomgross]

  • 替换过时的测试断言调用。[tomgross]

1.0.10 (2018-01-30)

错误修复

  • 增加Python 2 / 3的兼容性。[vincero]

1.0.9 (2016-08-08)

错误修复

  • 使用zope.interface装饰器。[gforcada]

1.0.8 (2016-04-26)

修复

  • 更新测试层以使用最佳实践,并移除ZopeTestCase依赖,这应该可以解决其测试隔离问题。[gforcada]

1.0.7 (2015-07-29)

  • 依赖于Products.CMFCore并移除fake-cmf,因为这样做比减少复杂性更有帮助。[jensens]

  • 清理:遵循PEP8规范,并不要将内置的id用作标识符。[jensens]

1.0.6 (2015-05-11)

  • 空格清理,git忽略,清理包信息。[gforcada, rnixx, maurits]

1.0.5 (2013-12-07)

  • 允许反转当前顺序,无需指定排序键。[maurits]

  • 允许通过方法而不是属性进行排序。[maurits]

1.0.4 (2012-08-30)

  • 更新manifest.in以修复打包错误。[esteele]

1.0.3 (2012-08-29)

  • 在setup.py中更明确地命名更多依赖项。[thet]

1.0.2 (2012-07-02)

  • 更新notifyContainerModified导入位置。[hannosch]

  • 添加MANIFEST.in。[WouterVH]

1.0.1 - 2010-08-08

  • 向有序文件夹实现添加了objectValues和objectItems方法,这些方法使用objectIds,从而使用排序信息。在Zope 2.13中,BTreeFolder2通过优化遍历内部_tree数据结构,避免了objectIds的中介。[hannosch]

1.0 - 2010-07-18

  • 在DefaultOrdering适配器中避免危险的记忆化。[hannosch]

  • 将许可证更新为仅支持GPL版本2。[hannosch]

1.0b5 - 2010-03-06

  • 由于在Zope 2.x中使用时会导致严重的性能问题,因此不再支持为提供IContained的内容设置__parent____name__。[witsch]

1.0b4 - 2010-02-17

  • 现在默认注册所有排序适配器,因为它们可以共存。[witsch]

  • 向默认排序适配器添加__getitem__支持,以帮助在plone.app.folder中实现上一项/下一项支持。[witsch]

1.0b3 - 2010-02-09

  • 确保在使用局部排序适配器时持久化排序更改。[hannosch, witsch]

1.0b2 - 2010-01-28

  • 将对Products.CMFCore的依赖性变为软依赖。[witsch]

  • 添加了一个“无序”适配器,当不需要显式排序时可以使用它。[davisagli]

  • 允许使用不同命名的适配器来IOrdering,其名称由文件夹的_ordering属性确定。[davisagli]

1.0b1 - 2009-10-10

  • 通过正确返回所需的NullResource来修复WebDAV内容创建过程。[optilude]

1.0a3 - 2009-05-11

  • objectIds始终返回所有对象ID,即使在局部排序的情况下也是如此。[witsch]

1.0a2 - 2009-05-07

  • 修复默认排序中的错误,该错误会导致删除项目时pos字典失去同步。[optilude]

  • 声明对IContainer的支持。[optilude]

  • _setOb()中正确设置__parent____name__,以便为IContained设置。

  • 添加__getitem__,在未使用CMF混合时需要。[optilude]

  • 添加了 __setitem____contains____delitem__ 以支持类似于字典的 API。[optilude]

  • 修复了移除非可排序内容以支持部分排序的问题。[witsch]

  • 修复了 getObjectPosition,使其对于非可排序内容返回表示“无位置”的值,而不是抛出错误。[witsch]

  • 修复了基于 btree 的文件夹基类的布尔值。[witsch]

  • 将 CMF 从基于 btree 的文件夹类中提取出来,之后简化了一些事情。[witsch]

  • 添加了仅针对“可排序”内容提供显式排序的适配器。[witsch]

  • 清理了测试及其设置。[witsch]

1.0a1 - 2008-05-27

  • 初始发布 [optilude, tesdal, witsch]

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解有关 安装包 的更多信息。

源分布

plone.folder-4.0.1.tar.gz (30.9 kB 查看散列值)

上传时间

构建分布

plone.folder-4.0.1-py3-none-any.whl (26.0 kB 查看散列值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面