added recently viewed to new search

This commit is contained in:
vabene1111
2021-04-26 17:21:14 +02:00
parent ec95f8032c
commit dc27f39393
5 changed files with 30 additions and 9 deletions

View File

@ -3,10 +3,11 @@ from functools import reduce
from django.contrib.postgres.search import TrigramSimilarity
from django.db.models import Q
from cookbook.models import ViewLog
from recipes import settings
def search_recipes(queryset, params):
def search_recipes(request, queryset, params):
search_string = params.get('query', '')
search_keywords = params.getlist('keywords', [])
search_foods = params.getlist('foods', [])
@ -18,9 +19,18 @@ def search_recipes(queryset, params):
search_internal = params.get('internal', None)
search_random = params.get('random', False)
search_last_viewed = int(params.get('last_viewed', 0))
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']:
queryset = queryset.annotate(similarity=TrigramSimilarity('name', search_string), ).filter(Q(similarity__gt=0.1) | Q(name__unaccent__icontains=search_string)).order_by('-similarity')
if search_last_viewed > 0:
last_viewed_recipes = ViewLog.objects.filter(created_by=request.user, space=request.space).order_by(
'-created_at').values('recipe').distinct().all()[:search_last_viewed]
return queryset.filter(pk__in=last_viewed_recipes)
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2',
'django.db.backends.postgresql']:
queryset = queryset.annotate(similarity=TrigramSimilarity('name', search_string), ).filter(
Q(similarity__gt=0.1) | Q(name__unaccent__icontains=search_string)).order_by('-similarity')
else:
queryset = queryset.filter(name__icontains=search_string)