Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions ckanext/og_datatablesview/blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ def format_fts_query(search_value):
processed_terms = []
for word in space_separated:
if word:
is_date = re.match(r'^\d{1,2}[/-]\d{1,2}[/-]\d{2,4}$', word)
if is_date:
processed_terms.append(word + u':*')
continue
# replace non-alphanumeric characters with FTS wildcard (_)
processed = re.sub(r'[^0-9a-zA-Z\-]+', '_', word)
if processed:
Expand Down
35 changes: 35 additions & 0 deletions ckanext/og_datatablesview/tests/test_logic.py
Original file line number Diff line number Diff line change
Expand Up @@ -285,3 +285,38 @@ def test_format_fts_query_multiple_apostrophes(self):
# Multiple apostrophes
result = format_fts_query("O'Brien's")
assert result == "(O:* | Brien:* | s:*)"

def test_format_fts_query_date_single_digit_month_day(self):
# Date with single digit month and day
result = format_fts_query('1/3/2025')
assert result == '1/3/2025:*'

def test_format_fts_query_date_two_digit_month_day(self):
# Date with two digit month and day
result = format_fts_query('1/13/2025')
assert result == '1/13/2025:*'

def test_format_fts_query_date_two_digit_year(self):
# Date with two digit year
result = format_fts_query('1/13/25')
assert result == '1/13/25:*'

def test_format_fts_query_date_with_dash(self):
# Date with dashes instead of slashes
result = format_fts_query('1-13-2025')
assert result == '1-13-2025:*'

def test_format_fts_query_date_in_phrase(self):
# Date within a phrase
result = format_fts_query('Contract Begin Date 1/13/2025')
assert result == 'Contract:* & Begin:* & Date:* & 1/13/2025:*'

def test_format_fts_query_multiple_dates(self):
# Multiple dates in search
result = format_fts_query('1/13/2025 6/30/2025')
assert result == '1/13/2025:* & 6/30/2025:*'

def test_format_fts_query_date_with_compound_word(self):
# Date with compound word in same search
result = format_fts_query('Board/Village 1/13/2025')
assert result == '(Board:* | Village:*) & 1/13/2025:*'