mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-10 00:28:22 -05:00
Squashed commit of the following:
commit 52909e8117
Author: smilerz <smilerz@gmail.com>
Date: Wed Sep 6 15:54:23 2023 -0500
fix recipe counting issue on extended mixin
This commit is contained in:
@@ -56,8 +56,7 @@ class ExtendedRecipeMixin(serializers.ModelSerializer):
|
|||||||
api_serializer = None
|
api_serializer = None
|
||||||
# extended values are computationally expensive and not needed in normal circumstances
|
# extended values are computationally expensive and not needed in normal circumstances
|
||||||
try:
|
try:
|
||||||
if str2bool(
|
if str2bool(self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
|
||||||
self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
|
|
||||||
return fields
|
return fields
|
||||||
except (AttributeError, KeyError):
|
except (AttributeError, KeyError):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -153,8 +153,7 @@ class ExtendedRecipeMixin():
|
|||||||
|
|
||||||
# add a recipe count annotation to the query
|
# add a recipe count annotation to the query
|
||||||
# explanation on construction https://stackoverflow.com/a/43771738/15762829
|
# explanation on construction https://stackoverflow.com/a/43771738/15762829
|
||||||
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(
|
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(recipe_filter).annotate(count=Count('pk', distinct=True)).values('count')
|
||||||
recipe_filter).annotate(count=Count('pk')).values('count')
|
|
||||||
queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0))
|
queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0))
|
||||||
|
|
||||||
# add a recipe image annotation to the query
|
# add a recipe image annotation to the query
|
||||||
@@ -323,8 +322,7 @@ class TreeMixin(MergeMixin, FuzzyFilterMixin, ExtendedRecipeMixin):
|
|||||||
except self.model.DoesNotExist:
|
except self.model.DoesNotExist:
|
||||||
self.queryset = self.model.objects.none()
|
self.queryset = self.model.objects.none()
|
||||||
else:
|
else:
|
||||||
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request,
|
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request, serializer=self.serializer_class, tree=True)
|
||||||
serializer=self.serializer_class, tree=True)
|
|
||||||
self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc())
|
self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc())
|
||||||
|
|
||||||
return self.annotate_recipe(queryset=self.queryset, request=self.request, serializer=self.serializer_class,
|
return self.annotate_recipe(queryset=self.queryset, request=self.request, serializer=self.serializer_class,
|
||||||
|
|||||||
Reference in New Issue
Block a user