diff --git a/cookbook/helper/recipe_search.py b/cookbook/helper/recipe_search.py index 5c5412de13..2e46bd77dc 100644 --- a/cookbook/helper/recipe_search.py +++ b/cookbook/helper/recipe_search.py @@ -172,6 +172,8 @@ def _favorite_recipes(self): def keyword_filters(self, keywords=None, operator=True): if not keywords: return + if not isinstance(keywords, list): + keywords = [keywords] if operator == True: # 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))) @@ -184,6 +186,8 @@ def keyword_filters(self, keywords=None, operator=True): def food_filters(self, foods=None, operator=True): if not foods: return + if not isinstance(foods, list): + foods = [foods] if operator == True: # 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))) @@ -198,7 +202,9 @@ def unit_filters(self, units=None, operator=True): raise NotImplementedError if not units: 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): if rating is None: @@ -217,6 +223,8 @@ def internal_filter(self): def book_filters(self, books=None, operator=True): if not books: return + if not isinstance(books, list): + books = [books] if operator == True: self._queryset = self._queryset.filter(recipebookentry__book__id__in=books) else: @@ -228,6 +236,8 @@ def step_filters(self, steps=None, operator=True): raise NotImplementedError if not steps: return + if not isinstance(steps, list): + steps = [unistepsts] self._queryset = self._queryset.filter(steps__id__in=steps) def build_fulltext_filters(self, string=None): diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 9cc740158e..5726bbae50 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -655,7 +655,8 @@ def get_queryset(self): # 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)} - 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 def list(self, request, *args, **kwargs):