Skip to content

Commit 1b97472

Browse files
committed
Squashed commit of the following:
commit 52909e8 Author: smilerz <[email protected]> Date: Wed Sep 6 15:54:23 2023 -0500 fix recipe counting issue on extended mixin
1 parent d467352 commit 1b97472

File tree

2 files changed

+3
-6
lines changed

2 files changed

+3
-6
lines changed

cookbook/serializer.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ def get_fields(self, *args, **kwargs):
5656
api_serializer = None
5757
# extended values are computationally expensive and not needed in normal circumstances
5858
try:
59-
if str2bool(
60-
self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
59+
if str2bool(self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
6160
return fields
6261
except (AttributeError, KeyError):
6362
pass

cookbook/views/api.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,7 @@ def annotate_recipe(self, queryset=None, request=None, serializer=None, tree=Fal
153153

154154
# add a recipe count annotation to the query
155155
# explanation on construction https://stackoverflow.com/a/43771738/15762829
156-
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(
157-
recipe_filter).annotate(count=Count('pk')).values('count')
156+
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(recipe_filter).annotate(count=Count('pk', distinct=True)).values('count')
158157
queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0))
159158

160159
# add a recipe image annotation to the query
@@ -323,8 +322,7 @@ def get_queryset(self):
323322
except self.model.DoesNotExist:
324323
self.queryset = self.model.objects.none()
325324
else:
326-
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request,
327-
serializer=self.serializer_class, tree=True)
325+
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request, serializer=self.serializer_class, tree=True)
328326
self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc())
329327

330328
return self.annotate_recipe(queryset=self.queryset, request=self.request, serializer=self.serializer_class,

0 commit comments

Comments
 (0)