Plone的EDTF行为。
项目描述
collective.edtf_behavior
一个Plone行为,提供EDTF日期字段和一些索引以搜索和排序复杂和历史上的日期。
注意:当前使用的库python-edtf的实现,仍然使用标准的早期草案:http://www.loc.gov/standards/datetime/pre-submission.html
功能
允许不具体的日期或日期区间:“1989-11”或“1989-11~”或“1989-11-01/1989-11-30”
季节:2001-21 >> Spring, 2001
旧日期如03.08.1492
搜索索引:date_earliest和date_latest
排序索引:date_sort_ascending和date_sort_descending
安装
通过将其添加到您的buildout来安装collective.edtf_behavior
[buildout] ... eggs = collective.edtf_behavior
然后运行 bin/buildout
在Plone附加组件部分激活该附加组件后,您可以在任何Dexterity基于的内容类型上启用此行为。
查询
from plone import api
查找最早日期为1920年2月6日或之后的任何文档。
results = api.content.find(
portal_type='Document',
date_earliest={
'query': datetime.date(1920, 2, 6),
'range': 'min',
},
)
查找最新日期为1711年11月11日或之前的任何文档。
results = api.content.find(
portal_type='Document',
date_latest={
'query': datetime.date(1711, 11, 11),
'range': 'max',
},
)
本包提供了一个名为edtf_start_end_range的DateRangeInRangeIndex。
查找至少与该区间的一个起始/结束日期匹配的所有文档。
results = api.content.find(
portal_type='Document',
edtf_start_end_range={
'start': datetime.date(1711, 11, 11),
'end': datetime.date(1920, 2, 6),
},
)
有关如何查询索引的更多示例,请参阅测试。
扩展
如果需要,可以通过使用DateRangeIndex(如Plone中的有效范围索引)来改进索引。
<!-- Example of a DateRangeIndex like the effectiveRange index in Plone -->
<index name="edtf_date_range" meta_type="DateRangeIndex"
since_field="date_earliest" until_field="date_latest" />
贡献
支持
如果您遇到问题,请告知我们。您可以在Gitter上联系我们。
许可证
本项目采用GPLv2许可。
贡献者
Maik Derstappen, md@derico.de
变更日志
1.0.3 (2019-08-26)
传真测试和测试设置,小的清理工作 [MrTango]
1.0.2 (2019-03-22)
将edtf_parseable验证器(约束)添加到edtf_behavior [MrTango]
1.0.1 (2019-03-18)
将absolute_import语句添加到所有文件,以改进Py3支持,修复README语法 [MrTango]
1.0 (2019-03-18)
在readme中添加edtf_start_end_range索引和文档查询 [MrTango]
1.0a1 (2019-03-14)
初始发布,包含EDTF行为和4个主要索引。 [MrTango]