Handle unparseable date range passed via date filter in query

- Do not reuse the same list
- Just create new list, so only parsed data is in it
This commit is contained in:
Debanjum Singh Solanky 2022-07-14 22:47:23 +04:00
parent a60de2c02b
commit 85077bc1d1
2 changed files with 7 additions and 3 deletions

View file

@ -63,10 +63,11 @@ def extract_date_range(query):
# extract, parse natural dates ranges from date range filter passed in query
# e.g today maps to (start_of_day, start_of_tomorrow)
for index, (cmp, date_str) in enumerate(date_range_matches):
date_ranges_from_filter = []
for (cmp, date_str) in date_range_matches:
if parse(date_str):
dt_start, dt_end = parse(date_str)
date_range_matches[index] = [cmp, (dt_start.timestamp(), dt_end.timestamp())]
date_ranges_from_filter += [[cmp, (dt_start.timestamp(), dt_end.timestamp())]]
# Combine dates with their comparators to form date range intervals
# For e.g
@ -75,7 +76,7 @@ def extract_date_range(query):
# ---
effective_date_range = [0, inf]
date_range_considering_comparator = []
for cmp, (dtrange_start, dtrange_end) in date_range_matches:
for cmp, (dtrange_start, dtrange_end) in date_ranges_from_filter:
if cmp == '>':
date_range_considering_comparator += [[dtrange_end, inf]]
elif cmp == '>=':

View file

@ -60,6 +60,9 @@ def test_extract_date_range():
assert date_filter.extract_date_range('head dt>="1984-01-01"') == [datetime(1984, 1, 1, 0, 0, 0).timestamp(), inf]
assert date_filter.extract_date_range('head dt:"1984-01-01"') == [datetime(1984, 1, 1, 0, 0, 0).timestamp(), datetime(1984, 1, 2, 0, 0, 0).timestamp()]
# Unparseable date filter specified in query
assert date_filter.extract_date_range('head dt:"Summer of 69" tail') == None
# No date filter specified in query
assert date_filter.extract_date_range('head tail') == None