Fixed a bug that was raising FieldError in dev because of failing trigram similarity search.
Some checks failed
StarFields Django Rest Framework Generics / build (push) Failing after 32s
Some checks failed
StarFields Django Rest Framework Generics / build (push) Failing after 32s
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
|
from django.utils.text import smart_split
|
||||||
|
from django.core.exceptions import FieldError
|
||||||
import operator
|
import operator
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
from rest_framework.settings import api_settings
|
from rest_framework.settings import api_settings
|
||||||
@@ -414,6 +415,12 @@ class TrigramSearchFilter(BaseFilterBackend):
|
|||||||
search_title = _('Search')
|
search_title = _('Search')
|
||||||
search_description = _('A search string to perform trigram similarity'
|
search_description = _('A search string to perform trigram similarity'
|
||||||
'based searching with.')
|
'based searching with.')
|
||||||
|
lookup_prefixes = {
|
||||||
|
'^': 'istartswith',
|
||||||
|
'=': 'iexact',
|
||||||
|
'@': 'search',
|
||||||
|
'$': 'iregex',
|
||||||
|
}
|
||||||
|
|
||||||
def get_filters_dict(self, request, view):
|
def get_filters_dict(self, request, view):
|
||||||
"""
|
"""
|
||||||
@@ -534,7 +541,8 @@ class TrigramSearchFilter(BaseFilterBackend):
|
|||||||
'search_field', query)
|
'search_field', query)
|
||||||
).filter(similarity__gt=threshold)
|
).filter(similarity__gt=threshold)
|
||||||
|
|
||||||
except ImportError:
|
# NOTE a weird FieldError is raised on sqlite
|
||||||
|
except (ImportError, FieldError):
|
||||||
# Perform very simple sqlite compatible search
|
# Perform very simple sqlite compatible search
|
||||||
search_terms = search_smart_split(query)
|
search_terms = search_smart_split(query)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user