A reusable application.
Project description
===============================
Welcome to thecut-durationfield
===============================
.. image:: https://travis-ci.org/thecut/thecut-durationfield.svg
:target: https://travis-ci.org/thecut/thecut-durationfield
.. image:: https://codecov.io/github/thecut/thecut-durationfield/coverage.svg
:target: https://codecov.io/github/thecut/thecut-durationfield
.. image:: https://readthedocs.org/projects/thecut-durationfield/badge/?version=latest
:target: http://thecut-durationfield.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
This app provides a custom Django model field, ``RelativeDeltaField``, and
related form fields and widgets. ``RelativeDeltaField`` stores time durations
using `ISO 8601`_ representations, and returns ``dateutil.relativedelta``
objects which may be used directly with ``datetime.datetime`` objects.
This project was inspired by packages such as `django-durationfield`_. However,
this project focuses on:
#. providing a database-agnostic, standards-compliant way of storing the
durations in the database (using `ISO 8601`_).
#. returning ``dateutil.relativedelta`` objects that can be used to perform
calculations on ``datetime.datetime`` objects.
Note that `django-durationfield`_ provides the ability to filter querysets
based on the relative size of the stored duration, which is not possible with
this project. I.e., you can't use ``__lt`` and ``__gt`` etc., when filtering
by fields provided by this project.
Documentation
-------------
The full documentation is at https://thecut-durationfield.readthedocs.org.
Quickstart
----------
Install ``thecut-durationfield`` using the :ref:`installation`.
Model field
~~~~~~~~~~~
.. code:: python
from django.db import models
from datetime import datetime
from thecut.durationfield.models import RelativeDeltaField
class MyModel(models.Model):
duration = RelativeDeltaField(blank=True, null=True)
my_instance = MyModel(duration='P7D')
datetime(2014, 1, 1) + my_instance.duration # datetime(2014, 1, 8, 0, 0)
Form field
~~~~~~~~~~
Two form fields are provided: ``RelativeDeltaChoiceField`` and
``RelativeDeltaTextInput``:
.. code:: python
from django import forms
from thecut.durationfield.models import RelativeDeltaChoiceField
DURATIONS = [
('', 'Never'),
('P7D', 'One week'),
('P1M', 'One month'),
]
class MyForm(forms.ModelForm):
duration = RelativeDeltaChoiceField(choices=DURATIONS)
or, if you'd prefer to type in the (`ISO 8601`_ compliant) value manually:
.. code:: python
from django import forms
from thecut.durationfield.forms import RelativeDeltaTextInput
class MyForm(forms.ModelForm):
duration = RelativeDeltaTextInput()
Credits
-------
See :ref:`credits`.
.. _`ISO 8601`: http://en.wikipedia.org/wiki/ISO_8601#Durations
.. _`django-durationfield`: https://github.com/johnpaulett/django-durationfield
.. _`pypi`: http://pypi.python.org/pypi/django-timezone-field/
.. _`pip`: http://www.pip-installer.org/
.. :changelog:
=======
History
=======
2.0.2 (2016-08-15)
------------------
* Documentation updates.
2.0.1 (2016-08-15)
------------------
* Documentation fixes.
* Testing fixes.
2.0 (2016-08-15)
------------------
* Added support for Django 1.10.
* Removed support for Django < 1.8.
* Restructured test suite.
* Restructured documentation.
1.0.8 (2015-08-26)
------------------
* Improved handling of seconds and milliseconds.
1.0.8 (2015-08-26)
------------------
* Improved handling of seconds and milliseconds.
1.0.7 (2015-03-17)
------------------
* Added Python 3 support.
1.0.6 (2014-07-28)
------------------
* Fix an issue which caused an empty ``relativedelta`` to be returned for a
database NULL value.
* Get ``tox`` up and running.
* Update package for public release.
1.0.5 (2014-03-19)
------------------
- Remove ``distribute`` from ``install_requires``.
1.0.4 (2013-12-17)
-------------------
- Fixed an issue with Postgres's fixed-length 64 character field.
1.0.3 (2013-09-28)
------------------
- Minor code cleanup.
1.0.2 (20132-08-08)
-------------------
- Add a Select widget for friendlier form input.
1.0.1 (2013-07-25)
------------------
- Fixes to south introspection rules.
1.0 (2013-07-25)
----------------
- First useful release with base model and form fields.
0.1 (2013-06-10)
----------------
- Initial release, mostly useless.
Welcome to thecut-durationfield
===============================
.. image:: https://travis-ci.org/thecut/thecut-durationfield.svg
:target: https://travis-ci.org/thecut/thecut-durationfield
.. image:: https://codecov.io/github/thecut/thecut-durationfield/coverage.svg
:target: https://codecov.io/github/thecut/thecut-durationfield
.. image:: https://readthedocs.org/projects/thecut-durationfield/badge/?version=latest
:target: http://thecut-durationfield.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
This app provides a custom Django model field, ``RelativeDeltaField``, and
related form fields and widgets. ``RelativeDeltaField`` stores time durations
using `ISO 8601`_ representations, and returns ``dateutil.relativedelta``
objects which may be used directly with ``datetime.datetime`` objects.
This project was inspired by packages such as `django-durationfield`_. However,
this project focuses on:
#. providing a database-agnostic, standards-compliant way of storing the
durations in the database (using `ISO 8601`_).
#. returning ``dateutil.relativedelta`` objects that can be used to perform
calculations on ``datetime.datetime`` objects.
Note that `django-durationfield`_ provides the ability to filter querysets
based on the relative size of the stored duration, which is not possible with
this project. I.e., you can't use ``__lt`` and ``__gt`` etc., when filtering
by fields provided by this project.
Documentation
-------------
The full documentation is at https://thecut-durationfield.readthedocs.org.
Quickstart
----------
Install ``thecut-durationfield`` using the :ref:`installation`.
Model field
~~~~~~~~~~~
.. code:: python
from django.db import models
from datetime import datetime
from thecut.durationfield.models import RelativeDeltaField
class MyModel(models.Model):
duration = RelativeDeltaField(blank=True, null=True)
my_instance = MyModel(duration='P7D')
datetime(2014, 1, 1) + my_instance.duration # datetime(2014, 1, 8, 0, 0)
Form field
~~~~~~~~~~
Two form fields are provided: ``RelativeDeltaChoiceField`` and
``RelativeDeltaTextInput``:
.. code:: python
from django import forms
from thecut.durationfield.models import RelativeDeltaChoiceField
DURATIONS = [
('', 'Never'),
('P7D', 'One week'),
('P1M', 'One month'),
]
class MyForm(forms.ModelForm):
duration = RelativeDeltaChoiceField(choices=DURATIONS)
or, if you'd prefer to type in the (`ISO 8601`_ compliant) value manually:
.. code:: python
from django import forms
from thecut.durationfield.forms import RelativeDeltaTextInput
class MyForm(forms.ModelForm):
duration = RelativeDeltaTextInput()
Credits
-------
See :ref:`credits`.
.. _`ISO 8601`: http://en.wikipedia.org/wiki/ISO_8601#Durations
.. _`django-durationfield`: https://github.com/johnpaulett/django-durationfield
.. _`pypi`: http://pypi.python.org/pypi/django-timezone-field/
.. _`pip`: http://www.pip-installer.org/
.. :changelog:
=======
History
=======
2.0.2 (2016-08-15)
------------------
* Documentation updates.
2.0.1 (2016-08-15)
------------------
* Documentation fixes.
* Testing fixes.
2.0 (2016-08-15)
------------------
* Added support for Django 1.10.
* Removed support for Django < 1.8.
* Restructured test suite.
* Restructured documentation.
1.0.8 (2015-08-26)
------------------
* Improved handling of seconds and milliseconds.
1.0.8 (2015-08-26)
------------------
* Improved handling of seconds and milliseconds.
1.0.7 (2015-03-17)
------------------
* Added Python 3 support.
1.0.6 (2014-07-28)
------------------
* Fix an issue which caused an empty ``relativedelta`` to be returned for a
database NULL value.
* Get ``tox`` up and running.
* Update package for public release.
1.0.5 (2014-03-19)
------------------
- Remove ``distribute`` from ``install_requires``.
1.0.4 (2013-12-17)
-------------------
- Fixed an issue with Postgres's fixed-length 64 character field.
1.0.3 (2013-09-28)
------------------
- Minor code cleanup.
1.0.2 (20132-08-08)
-------------------
- Add a Select widget for friendlier form input.
1.0.1 (2013-07-25)
------------------
- Fixes to south introspection rules.
1.0 (2013-07-25)
----------------
- First useful release with base model and form fields.
0.1 (2013-06-10)
----------------
- Initial release, mostly useless.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
thecut-durationfield-2.0.2.tar.gz
(14.7 kB
view hashes)
Close
Hashes for thecut-durationfield-2.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6151eb022741072e97b1553133f3a5d097afb8462d5261ba6ed507d054632451 |
|
MD5 | 98c1597a0817ba3d3e311ae7ea9400e3 |
|
BLAKE2b-256 | 806293c2fa1446cb8da0433ebb80d417ced14dd5d9b59e2a0a9f79ddece89d34 |