always sort count attributes to end

This commit is contained in:
smilerz 2022-02-15 16:19:41 -06:00
parent b5c6c7cf2b
commit bd973ec3a9
No known key found for this signature in database
GPG Key ID: 39444C7606D47126

View File

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