From bd973ec3a990ec1ce9f6e1ad43cc81440300dfed Mon Sep 17 00:00:00 2001 From: smilerz Date: Tue, 15 Feb 2022 16:19:41 -0600 Subject: [PATCH] always sort count attributes to end --- cookbook/helper/recipe_search.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/cookbook/helper/recipe_search.py b/cookbook/helper/recipe_search.py index 03cf91f7..98a13745 100644 --- a/cookbook/helper/recipe_search.py +++ b/cookbook/helper/recipe_search.py @@ -284,12 +284,17 @@ class RecipeSearch(): def _favorite_recipes(self, timescooked=None): if self._sort_includes('favorite') or timescooked: + lessthan = '-' in (timescooked or []) or not self._sort_includes('-favorite') + if lessthan: + default = 1000 + else: + default = 0 favorite_recipes = CookLog.objects.filter(created_by=self._request.user, space=self._request.space, recipe=OuterRef('pk') ).values('recipe').annotate(count=Count('pk', distinct=True)).values('count') - self._queryset = self._queryset.annotate(favorite=Coalesce(Subquery(favorite_recipes), 0)) + self._queryset = self._queryset.annotate(favorite=Coalesce(Subquery(favorite_recipes), default)) if timescooked is None: return - lessthan = '-' in timescooked + if timescooked == '0': self._queryset = self._queryset.filter(favorite=0) elif lessthan: @@ -377,9 +382,9 @@ class RecipeSearch(): if rating or self._sort_includes('rating'): lessthan = self._sort_includes('-rating') or '-' in (rating or []) if lessthan: - default = Value(0) + default = 100 else: - default = Value(100) + default = 0 # TODO make ratings a settings user-only vs all-users self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=default)))) if rating is None: