2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-13 02:25:38 +00:00

Add unit tests for new aggregation annotation approach

This commit is contained in:
Oliver Walters
2020-09-05 23:28:54 +10:00
parent 5f2e4c3790
commit f7ad38dad5
3 changed files with 97 additions and 2 deletions

View File

@ -15,7 +15,7 @@ from .models import PartTestTemplate
from decimal import Decimal
from sql_util.utils import SubquerySum
from sql_util.utils import SubquerySum, SubqueryCount
from django.db.models import Q
from django.db.models.functions import Coalesce
@ -208,6 +208,11 @@ class PartSerializer(InvenTreeModelSerializer):
),
)
# Annotate with the total number of stock items
queryset = queryset.annotate(
stock_item_count=SubqueryCount('stock_items')
)
# Filter to limit builds to "active"
build_filter = Q(
status__in=BuildStatus.ACTIVE_CODES
@ -253,6 +258,7 @@ class PartSerializer(InvenTreeModelSerializer):
in_stock = serializers.FloatField(read_only=True)
ordering = serializers.FloatField(read_only=True)
building = serializers.FloatField(read_only=True)
stock_item_count = serializers.IntegerField(read_only=True)
image = serializers.CharField(source='get_image_url', read_only=True)
thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True)
@ -295,6 +301,7 @@ class PartSerializer(InvenTreeModelSerializer):
'revision',
'salable',
'starred',
'stock_item_count',
'thumbnail',
'trackable',
'units',