Add a date query precision of ‘second’

This commit is contained in:
discopatrick 2017-04-27 00:24:17 +01:00
parent 02bd19fb32
commit 24890c77f1
2 changed files with 21 additions and 2 deletions

View file

@ -533,13 +533,14 @@ class Period(object):
instants of time during January 2014.
"""
precisions = ('year', 'month', 'day', 'hour', 'minute')
precisions = ('year', 'month', 'day', 'hour', 'minute', 'second')
date_formats = (
('%Y',), # year
('%Y-%m',), # month
('%Y-%m-%d',), # day
('%Y-%m-%dT%H', '%Y-%m-%d %H'), # hour
('%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M') # minute
('%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M'), # minute
('%Y-%m-%dT%H:%M:%S', '%Y-%m-%d %H:%M:%S') # second
)
def __init__(self, date, precision):
@ -599,6 +600,8 @@ class Period(object):
return date + timedelta(hours=1)
elif 'minute' == precision:
return date + timedelta(minutes=1)
elif 'second' == precision:
return date + timedelta(seconds=1)
else:
raise ValueError(u'unhandled precision {0}'.format(precision))

View file

@ -99,6 +99,22 @@ class DateIntervalTest(unittest.TestCase):
self.assertContains('2000-01-01 12:30..2000-01-01 12:31',
'2000-01-01T12:30:00')
def test_second_precision_intervals(self):
self.assertExcludes('2000-01-01T12:30:50..2000-01-01T12:30:55',
'2000-01-01T12:30:49')
self.assertContains('2000-01-01T12:30:50..2000-01-01T12:30:55',
'2000-01-01T12:30:50')
self.assertContains('2000-01-01T12:30:50..2000-01-01T12:30:55',
'2000-01-01T12:30:55')
self.assertExcludes('2000-01-01T12:30:50..2000-01-01T12:30:55',
'2000-01-01T12:30:56')
# test with ' ' (space) separator
self.assertExcludes('2000-01-01 12:30:50..2000-01-01 12:30:55',
'2000-01-01T12:30:49')
self.assertContains('2000-01-01 12:30:50..2000-01-01 12:30:55',
'2000-01-01T12:30:50')
def test_unbounded_endpoints(self):
self.assertContains('..', date=datetime.max)
self.assertContains('..', date=datetime.min)