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):

View File

@@ -148,7 +148,6 @@ def import_url(request):
recipe.steps.add(step)
all_keywords = Keyword.get_tree()
for kw in data['keywords']:
k, created = Keyword.objects.get_or_create(name=kw['text'], space=request.space)
recipe.keywords.add(k)

View File

@@ -56,9 +56,7 @@ def index(request):
return HttpResponseRedirect(reverse('view_search'))
# faceting
# unaccent / likely will perform full table scan
# create tests
# TODO need to deprecate
def search(request):
if has_group_permission(request.user, ('guest',)):
if request.user.userpreference.search_style == UserPreference.NEW: