diff --git a/constance/admin.py b/constance/admin.py index c18ce5f..a6b7424 100644 --- a/constance/admin.py +++ b/constance/admin.py @@ -1,4 +1,4 @@ -from datetime import datetime, date, time +from datetime import datetime, date, time, timedelta from decimal import Decimal import hashlib from operator import itemgetter @@ -42,6 +42,9 @@ FIELDS = { datetime: ( fields.SplitDateTimeField, {'widget': widgets.AdminSplitDateTime} ), + timedelta: ( + fields.DurationField, {'widget': widgets.AdminTextInputWidget} + ), date: (fields.DateField, {'widget': widgets.AdminDateWidget}), time: (fields.TimeField, {'widget': widgets.AdminTimeWidget}), float: (fields.FloatField, {'widget': NUMERIC_WIDGET}), diff --git a/tests/settings.py b/tests/settings.py index e7b582a..a12051f 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- from django.utils import six -from datetime import datetime, date, time +from datetime import datetime, date, time, timedelta from decimal import Decimal @@ -75,6 +75,7 @@ CONSTANCE_CONFIG = { 'FLOAT_VALUE': (3.1415926536, 'PI'), 'DATE_VALUE': (date(2010, 12, 24), 'Merry Chrismas'), 'TIME_VALUE': (time(23, 59, 59), 'And happy New Year'), + 'TIMEDELTA_VALUE': (timedelta(days=1, hours=2, minutes=3), 'Interval'), 'CHOICE_VALUE': ('yes', 'select yes or no', 'yes_no_null_select'), 'LINEBREAK_VALUE': ('Spam spam', 'eggs\neggs'), 'EMAIL_VALUE': ('test@example.com', 'An email', 'email'), diff --git a/tests/storage.py b/tests/storage.py index 2c19062..738821e 100644 --- a/tests/storage.py +++ b/tests/storage.py @@ -1,5 +1,5 @@ # -*- encoding: utf-8 -*- -from datetime import datetime, date, time +from datetime import datetime, date, time, timedelta from decimal import Decimal from django.utils import six @@ -28,6 +28,7 @@ class StorageTestsMixin(object): self.assertEqual(self.config.FLOAT_VALUE, 3.1415926536) self.assertEqual(self.config.DATE_VALUE, date(2010, 12, 24)) self.assertEqual(self.config.TIME_VALUE, time(23, 59, 59)) + self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=1, hours=2, minutes=3)) self.assertEqual(self.config.CHOICE_VALUE, 'yes') self.assertEqual(self.config.EMAIL_VALUE, 'test@example.com') @@ -42,6 +43,7 @@ class StorageTestsMixin(object): self.config.FLOAT_VALUE = 2.718281845905 self.config.DATE_VALUE = date(2001, 12, 20) self.config.TIME_VALUE = time(1, 59, 0) + self.config.TIMEDELTA_VALUE = timedelta(days=2, hours=3, minutes=4) self.config.CHOICE_VALUE = 'no' self.config.EMAIL_VALUE = 'foo@bar.com' @@ -56,6 +58,7 @@ class StorageTestsMixin(object): self.assertEqual(self.config.FLOAT_VALUE, 2.718281845905) self.assertEqual(self.config.DATE_VALUE, date(2001, 12, 20)) self.assertEqual(self.config.TIME_VALUE, time(1, 59, 0)) + self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=2, hours=3, minutes=4)) self.assertEqual(self.config.CHOICE_VALUE, 'no') self.assertEqual(self.config.EMAIL_VALUE, 'foo@bar.com') @@ -90,3 +93,4 @@ class StorageTestsMixin(object): self.assertEqual(self.config.FLOAT_VALUE, 3.1415926536) # this should be the default value self.assertEqual(self.config.DATE_VALUE, date(2001, 12, 20)) self.assertEqual(self.config.TIME_VALUE, time(1, 59, 0)) + self.assertEqual(self.config.TIMEDELTA_VALUE, timedelta(days=1, hours=2, minutes=3)) diff --git a/tests/test_cli.py b/tests/test_cli.py index 536085c..74df804 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -31,6 +31,7 @@ u""" BOOL_VALUE True LINEBREAK_VALUE Spam spam DATE_VALUE 2010-12-24 TIME_VALUE 23:59:59 + TIMEDELTA_VALUE 1 day, 2:03:00 LONG_VALUE 123456 STRING_VALUE Hello world UNICODE_VALUE Rivière-Bonjour რუსთაველი diff --git a/tests/test_form.py b/tests/test_form.py index 99208ae..0ccbde2 100644 --- a/tests/test_form.py +++ b/tests/test_form.py @@ -16,6 +16,7 @@ class TestForm(TestCase): self.assertIsInstance(f.fields['UNICODE_VALUE'], fields.CharField) self.assertIsInstance(f.fields['DECIMAL_VALUE'], fields.DecimalField) self.assertIsInstance(f.fields['DATETIME_VALUE'], fields.SplitDateTimeField) + self.assertIsInstance(f.fields['TIMEDELTA_VALUE'], fields.DurationField) self.assertIsInstance(f.fields['FLOAT_VALUE'], fields.FloatField) self.assertIsInstance(f.fields['DATE_VALUE'], fields.DateField) self.assertIsInstance(f.fields['TIME_VALUE'], fields.TimeField) diff --git a/tests/test_utils.py b/tests/test_utils.py index 69d52c1..2d6cfc4 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -27,6 +27,7 @@ class UtilsTestCase(TestCase): 'CHOICE_VALUE': 'yes', 'TIME_VALUE': datetime.time(23, 59, 59), 'DATE_VALUE': datetime.date(2010, 12, 24), + 'TIMEDELTA_VALUE': datetime.timedelta(days=1, hours=2, minutes=3), 'LINEBREAK_VALUE': 'Spam spam', 'DECIMAL_VALUE': Decimal('0.1'), 'STRING_VALUE': 'Hello world',