跳转到主要内容

Plone中使用的批处理功能

项目描述

欢迎使用Plone批处理文档!

此包包括创建批处理序列的功能。

它起源于为Plone编写的PloneBatch模块,而Plone本身是基于Zope2的ZTUtils.Batch。

变更日志

2.0.6 (2023-06-16)

内部

  • 更新配置文件。[plone开发者] (55bda5c9, 69cb8571, 9e6e627d)

2.0.5 (2023-05-22)

内部

  • 更新配置文件。[plone开发者] (12f48b08, 50c0e759)

2.0.4 (2023-03-14)

内部

  • 更新配置文件。[plone开发者] (e42131fe)

2.0.3 (2023-02-22)

内部

  • 使用(GitHub)组织级别的linting工作流程。[gforcada] (#1)

  • 更新包配置以使用pre-commit。[maurits] (#2)

2.0.2 (2023-02-07)

错误修复

  • 声明所有依赖项,如z3c.dependencychecker所报告的。[gforcada] (#1)

  • 使用依赖项测试环境更新tox配置。[gforcada] (#1)

2.0.1 (2023-01-26)

错误修复

  • 通过github.com/plone/meta统一仓库配置。[gforcada] (#1)

内部

  • 更新默认Plone meta的配置。[maurits] (#34)

2.0.0 (2022-11-30)

错误修复

  • 最终发布。[gforcada] (#600)

2.0.0a1 (2021-04-21)

破坏性更改

  • 更新以支持Plone 6的Bootstrap标记。[petschki, agitator] (#28)

新功能

  • 从父请求包含请求表单参数,以允许在plone.app.standardtiles中进行批处理,并使用collective.collectionfilter进行筛选。[agitator] (#26)

1.1.6 (2020-04-20)

错误修复

  • 较小的打包更新。(#1)

1.1.5 (2018-11-29)

错误修复

  • 对于孤立的单页,不显示批处理导航。[maurits] (#9)

1.1.4 (2018-09-27)

错误修复

  • 修复Python 2和Python 3中的navlist差异(参考#21)[ale-rt]

  • Python 3修复。[thet]

1.1.3 (2018-06-04)

新功能

  • 分页:使标签和箭头更容易自定义。[iham]

1.1.2 (2017-07-20)

错误修复

  • 添加了缺失的Zope2依赖项。[davisagli]

1.1.1 (2016-08-12)

修复

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

1.1.0 (2016-02-12)

新功能

  • 重构batchnavigation HTML布局,使用nav/ul/li元素代替div/span。[davilima6]

  • 将已弃用的listingBar CSS类切换到pagination。[davilima6]

  • 使省略号可定制,并为分页标记提供更多CSS钩子。[davilima6]

1.0.8 (未发布)

新功能

  • 使省略号可定制,并为分页标记提供更多CSS钩子。这还弃用了CSS类listingBar,以支持更常用的pagination,它将成为Plone 5.0.2及更高版本的标准。[davilima6]

1.0.7 (2016-01-08)

修复

  • 修复发布包中缺失的测试。[thet]

1.0.6 (2016-01-08)

新功能

  • make_link方法引入“omit_params”选项,并默认过滤出ajax_load。当通过ajax加载batchnavigation的内容时,它不会渲染启用ajax_load的链接,这可能会引起可用性问题。[thet]

修复

  • PEP 8,UTF 8头,文档清理。[thet]

1.0.5 (2015-07-18)

  • 确保页码值不大于numpages,否则在orphan中使用previous_pages时将失败。[gbastien]

  • 允许孤岛大小等于批处理大小。这允许批处理大小为0且默认孤岛大小为0的边缘情况。[do3cc]

1.0.4 (2015-04-28)

  • 修复与孤岛相关的lastpage计算问题。[gbastien]

1.0.3 (2015-02-20)

  • 修复孤岛问题。[do3cc]

1.0.2 (2014-04-13)

  • 修复问题,其中start >= end将始终返回最后一个项目。https://dev.plone.org/ticket/13880[thepjot]

  • 修复当序列长度恰好等于页面长度时的multiple_pages问题。[gaudenz]

1.0.1 (2014-01-27)

  • 修复当报告的长度与len()迭代返回的完整未批处理序列不同时的序列问题。[alecm]

1.0 (2013-05-23)

  • 在BatchView中使用索引而不是模板属性,以便仅自定义模板。[vincentfretin, thomasdesvenain]

  • 修复“第一项”的错误的msgid。[vincentfretin]

1.0b1 (2013-01-17)

  • 尚未有任何更改。

1.0a1 (2012-04-25)

  • 将Plone批处理实现因式分解为单独的egg(PLIP #12235)[tom_gross]

用法

在plone.batching中定义的批处理通常由两件事组成

  1. 批处理对象。这通常是一个序列的包装器,它提供信息片段。

  2. 批处理视图。这是必需的用于显示。它包含到1中定义的片段的链接。

这两个元素可以在Python代码和页面模板中定义和访问。

模板中的批量导航

要在页面模板中使用plone.batching的批量功能,首先必须创建一个序列批量并将其放入名为batch的模板变量中。如果可能的话,应在视图类中完成此操作。

<div tal:define="batch view/batchresults;">

如果需要,也可以在模板本身中完成

<div tal:define="Batch python:modules['plone.batching'].Batch;
                 b_size python:30;b_start python:0;b_start request/b_start | b_start;
                 batch python:Batch(results, b_size, int(b_start), orphan=1);">

对于导航,您需要将以下代码片段添加到模板中

<tal:batchnavigation
    define="batchnavigation nocall:context/@@batchnavigation"
    replace="structure python:batchnavigation(batch)" />

为了保持向后兼容性,plone.batchingbatch_macros模板中提供了一个可替换的金属宏navigation。将其按如下方式添加到模板中

<div metal:use-macro="context/batch_macros/macros/navigation" />

在Python代码中的使用

批量的实例化方式如下

>>> from plone.batching import Batch
>>> batch = Batch(range(100), size=15, orphan=10)

这会从序列[0, 1, …, 99]生成5个子批量,每个子批量包含15个项目,以及一个包含最后25个项目的子批量(包括10个孤立的项目)。有关BaseBatch类中可用的详细参数描述,请查看API。

实例化批量的另一种方式如下

>>> batch = Batch.fromPagenumber(range(100), pagesize=15, pagenumber=1)

这将产生6个包含15个项目的批量和一个包含最后10个项目的批量。这种方式创建批量是一个快捷方式,并不支持规范构造函数支持的所有选项。

对于大型序列,该软件包还提供了一个基类:QuantumBatch。这个批量生成量子跳跃以实现更快的导航。

>>> from plone.batching.batch import QuantumBatch
>>> qb = QuantumBatch(range(1000), 10, start=500, quantumleap=1)
>>> qb.leapforward
[69, 84]
>>> qb.leapback
[18, 33]

可以使用两个属性leapbackleapforward通过5次点击来导航存储在批量中的内容。

在视图中的使用

Plone.batching附带了一个可定制的批量视图batchnavigation,它有一个名为BatchView的视图类。该视图附带一个模板。如果您想自定义它,只需重写make_link方法。该方法应返回一个包含指定pagenumber的链接的字符串。以下是从plone.app.content中的folder_contents实现中的一个示例

>>> from plone.batching.browser import BatchView
>>> from ZTUtils import make_query

>>> class MyBatchView(BatchView):
...     def make_link(self, pagenumber):
...         batchlinkparams = self.request.form.copy()
...         return '%s?%s' % (self.request.ACTUAL_URL,
...                 make_query(batchlinkparams, {'pagenumber': pagenumber}))

您需要注意的一件事是,必须将批量作为第一个参数调用批量视图。

>>> from Products.Five import BrowserView
>>> class MyContentView(BrowserView):
...     def batch(self):
...         " "  # see above how a batch is defined
...
...     def batching(self):
...         return MyBatchView(self.context, self.request)(self.batch)

现在您可以在视图的模板中使用它。

<div tal:replace="structure view/batching" />

不兼容性

XXX __len__ 方法

项目详情


下载文件

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

源分布

plone.batching-2.0.6.tar.gz (22.0 kB 查看散列)

上传时间

构建分布

plone.batching-2.0.6-py3-none-any.whl (18.6 kB 查看散列)

上传于 Python 3

由...