fixes keyword filter on OR search

This commit is contained in:
smilerz
2021-08-24 22:01:02 -05:00
parent 16e8b24947
commit 78ebd18ed8
25 changed files with 54 additions and 102 deletions

View File

@ -108,8 +108,9 @@ class FuzzyFilterMixin(ViewSetMixin):
if fuzzy:
self.queryset = self.queryset.annotate(trigram=TrigramSimilarity('name', query)).filter(trigram__gt=0.2).order_by("-trigram")
else:
# TODO have this check unaccent search settings?
self.queryset = self.queryset.filter(name__icontains=query)
# TODO have this check unaccent search settings or other search preferences?
# TODO for some querysets exact matches are sorted beyond pagesize, need to find better solution
self.queryset = self.queryset.filter(name__istartswith=query) | self.queryset.filter(name__icontains=query)
updated_at = self.request.query_params.get('updated_at', None)
if updated_at is not None:
@ -144,14 +145,14 @@ class TreeMixin(FuzzyFilterMixin):
except self.model.DoesNotExist:
self.queryset = self.model.objects.none()
if root == 0:
self.queryset = self.model.get_root_nodes() | self.model.objects.filter(depth=0)
self.queryset = self.model.get_root_nodes()
else:
self.queryset = self.model.objects.get(id=root).get_children()
elif tree:
if tree.isnumeric():
try:
self.queryset = self.model.objects.get(id=int(tree)).get_descendants_and_self()
except Keyword.DoesNotExist:
except self.model.DoesNotExist:
self.queryset = self.model.objects.none()
else:
return super().get_queryset()
@ -466,7 +467,7 @@ class RecipePagination(PageNumberPagination):
max_page_size = 100
def paginate_queryset(self, queryset, request, view=None):
self.facets = get_facet(queryset, request.query_params)
self.facets = get_facet(queryset, request.query_params, request.space)
return super().paginate_queryset(queryset, request, view)
def get_paginated_response(self, data):