Skip to main content
https://secure.travis-ci.org/collective/collective.edtf_behavior.png?branch=master Coveralls License Join the chat at https://gitter.im/collective/collective.edtf_behavior

collective.edtf_behavior

A Plone behavior which provides a EDTF Date field and some indexes to search and sort on complex and historic dates.

Note: the current implementation of the used library python-edtf , still uses an earlier draft of the standard: http://www.loc.gov/standards/datetime/pre-submission.html

Features

  • 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

Installation

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.

Querying

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 .

Extending it

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" />

Contribute

Support

If you are having issues, please let us know. You can reach us on Gitter.

License

The project is licensed under the GPLv2.

Contributors

Changelog

1.0.3 (2019-08-26)

  • Faxed test and test setup, small cleanup [MrTango]

1.0.2 (2019-03-22)

  • Add edtf_parseable validator (constraint) to edtf_behavior [MrTango]

1.0.1 (2019-03-18)

  • Add absolute_import statement to all files, to improve Py3 support, fix README syntax [MrTango]

1.0 (2019-03-18)

  • Add edtf_start_end_range index and document querying in the readme. [MrTango]

1.0a1 (2019-03-14)

  • Initial release, with EDTF behavior and 4 main indexes. [MrTango]

Release files for collective.edtf-behavior 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for collective.edtf-behavior 1.0.3
File Size Uploaded
collective.edtf_behavior-1.0.3.tar.gz 18.0 kB Details

Release files / collective.edtf_behavior-1.0.3.tar.gz

Download URL collective.edtf_behavior-1.0.3.tar.gz
Size 18.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cc99feefe666c0ce353b9556227bf04d746ba6dd933ec169f35e74290395626d
BLAKE2b-256 checksum
How to use checksums
48baf1fd6b1f59e396a5fd6c1adb7d44b5aff3f36aabae8681eeb5e5d0fbab96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.1 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.20.0 CPython/2.7.16

Release history Release notifications | RSS feed

This release

1.0.3 This release

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page