A Plone behavior which provides a EDTF Date field and some indexes to search and sort on complex and historic dates.
- Allows unspecific dates or date intervals: "1989-11" or "1989-11~" or "1989-11-01/1989-11-30"
- Seasons: 2001-21 >> Spring, 2001
- old dates like 03.08.1492
- Search indexes: date_earliest and date_latest
- Sort indexes: date_sort_ascending and date_sort_descending
Install collective.edtf_behavior by adding it to your buildout:
[buildout] ... eggs = collective.edtf_behavior
and then running bin/buildout
After you activated the add-on in the Plone Add-ons section, you can Enable this behavior on any Dexterity based content type.
from plone import api
find any document which earliest date is 06.02.1920 or later.
results = api.content.find(
portal_type='Document',
date_earliest={
'query': datetime.date(1920, 2, 6),
'range': 'min',
},
)
find any document which latest date is 11.11.1711 or earlier.
results = api.content.find(
portal_type='Document',
date_latest={
'query': datetime.date(1711, 11, 11),
'range': 'max',
},
)
This package provides a DateRangeInRangeIndex named edtf_start_end_range
.
find all documents that fall at least with one start/end date of there interval into the range:
results = api.content.find(
portal_type='Document',
edtf_start_end_range={
'start': datetime.date(1711, 11, 11),
'end': datetime.date(1920, 2, 6),
},
)
For more examples how to query the indexes, have a look at the tests .
One could improve indexing by using a DateRangeIndex, like the effectiveRange index in Plone if needed.
<!-- 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" />
- Issue Tracker: https://github.com/collective/collective.edtf_behavior/issues
- Source Code: https://github.com/collective/collective.edtf_behavior
If you are having issues, please let us know. You can reach us on Gitter.
The project is licensed under the GPLv2.