diff --git a/src/search_filter/date_filter.py b/src/search_filter/date_filter.py index 39fd28ae..81febe1e 100644 --- a/src/search_filter/date_filter.py +++ b/src/search_filter/date_filter.py @@ -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 == '>=': diff --git a/tests/test_date_filter.py b/tests/test_date_filter.py index 2224b865..525f011e 100644 --- a/tests/test_date_filter.py +++ b/tests/test_date_filter.py @@ -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