Merge pull request #1352 from smilerz/fix-search
force list params to list
This commit is contained in:
commit
418c38423f
@ -172,6 +172,8 @@ class RecipeSearch():
|
|||||||
def keyword_filters(self, keywords=None, operator=True):
|
def keyword_filters(self, keywords=None, operator=True):
|
||||||
if not keywords:
|
if not keywords:
|
||||||
return
|
return
|
||||||
|
if not isinstance(keywords, list):
|
||||||
|
keywords = [keywords]
|
||||||
if operator == True:
|
if operator == True:
|
||||||
# TODO creating setting to include descendants of keywords a setting
|
# TODO creating setting to include descendants of keywords a setting
|
||||||
self._queryset = self._queryset.filter(keywords__in=Keyword.include_descendants(Keyword.objects.filter(pk__in=keywords)))
|
self._queryset = self._queryset.filter(keywords__in=Keyword.include_descendants(Keyword.objects.filter(pk__in=keywords)))
|
||||||
@ -184,6 +186,8 @@ class RecipeSearch():
|
|||||||
def food_filters(self, foods=None, operator=True):
|
def food_filters(self, foods=None, operator=True):
|
||||||
if not foods:
|
if not foods:
|
||||||
return
|
return
|
||||||
|
if not isinstance(foods, list):
|
||||||
|
foods = [foods]
|
||||||
if operator == True:
|
if operator == True:
|
||||||
# TODO creating setting to include descendants of food a setting
|
# TODO creating setting to include descendants of food a setting
|
||||||
self._queryset = self._queryset.filter(steps__ingredients__food__in=Food.include_descendants(Food.objects.filter(pk__in=foods)))
|
self._queryset = self._queryset.filter(steps__ingredients__food__in=Food.include_descendants(Food.objects.filter(pk__in=foods)))
|
||||||
@ -198,7 +202,9 @@ class RecipeSearch():
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
if not units:
|
if not units:
|
||||||
return
|
return
|
||||||
self._queryset = self._queryset.filter(steps__ingredients__unit__id=units)
|
if not isinstance(units, list):
|
||||||
|
units = [units]
|
||||||
|
self._queryset = self._queryset.filter(steps__ingredients__unit__in=units)
|
||||||
|
|
||||||
def rating_filter(self, rating=None):
|
def rating_filter(self, rating=None):
|
||||||
if rating is None:
|
if rating is None:
|
||||||
@ -217,6 +223,8 @@ class RecipeSearch():
|
|||||||
def book_filters(self, books=None, operator=True):
|
def book_filters(self, books=None, operator=True):
|
||||||
if not books:
|
if not books:
|
||||||
return
|
return
|
||||||
|
if not isinstance(books, list):
|
||||||
|
books = [books]
|
||||||
if operator == True:
|
if operator == True:
|
||||||
self._queryset = self._queryset.filter(recipebookentry__book__id__in=books)
|
self._queryset = self._queryset.filter(recipebookentry__book__id__in=books)
|
||||||
else:
|
else:
|
||||||
@ -228,6 +236,8 @@ class RecipeSearch():
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
if not steps:
|
if not steps:
|
||||||
return
|
return
|
||||||
|
if not isinstance(steps, list):
|
||||||
|
steps = [unistepsts]
|
||||||
self._queryset = self._queryset.filter(steps__id__in=steps)
|
self._queryset = self._queryset.filter(steps__id__in=steps)
|
||||||
|
|
||||||
def build_fulltext_filters(self, string=None):
|
def build_fulltext_filters(self, string=None):
|
||||||
|
@ -655,7 +655,8 @@ class RecipeViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
# self.queryset = search_recipes(self.request, self.queryset, self.request.GET)
|
# self.queryset = search_recipes(self.request, self.queryset, self.request.GET)
|
||||||
params = {x: self.request.GET.get(x) if len({**self.request.GET}[x]) == 1 else self.request.GET.getlist(x) for x in list(self.request.GET)}
|
params = {x: self.request.GET.get(x) if len({**self.request.GET}[x]) == 1 else self.request.GET.getlist(x) for x in list(self.request.GET)}
|
||||||
self.queryset = RecipeSearch(self.request, **params).get_queryset(self.queryset).prefetch_related('cooklog_set')
|
search = RecipeSearch(self.request, **params)
|
||||||
|
self.queryset = search.get_queryset(self.queryset).prefetch_related('cooklog_set')
|
||||||
return self.queryset
|
return self.queryset
|
||||||
|
|
||||||
def list(self, request, *args, **kwargs):
|
def list(self, request, *args, **kwargs):
|
||||||
|
Loading…
Reference in New Issue
Block a user