mirror of
https://github.com/khoaliber/khoj.git
synced 2026-03-06 21:29:12 +00:00
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:
@@ -63,10 +63,11 @@ def extract_date_range(query):
|
|||||||
|
|
||||||
# extract, parse natural dates ranges from date range filter passed in query
|
# extract, parse natural dates ranges from date range filter passed in query
|
||||||
# e.g today maps to (start_of_day, start_of_tomorrow)
|
# 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):
|
if parse(date_str):
|
||||||
dt_start, dt_end = 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
|
# Combine dates with their comparators to form date range intervals
|
||||||
# For e.g
|
# For e.g
|
||||||
@@ -75,7 +76,7 @@ def extract_date_range(query):
|
|||||||
# ---
|
# ---
|
||||||
effective_date_range = [0, inf]
|
effective_date_range = [0, inf]
|
||||||
date_range_considering_comparator = []
|
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 == '>':
|
if cmp == '>':
|
||||||
date_range_considering_comparator += [[dtrange_end, inf]]
|
date_range_considering_comparator += [[dtrange_end, inf]]
|
||||||
elif cmp == '>=':
|
elif cmp == '>=':
|
||||||
|
|||||||
@@ -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(), 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()]
|
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
|
# No date filter specified in query
|
||||||
assert date_filter.extract_date_range('head tail') == None
|
assert date_filter.extract_date_range('head tail') == None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user