diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 77e0dbd03e..de8bb6b06b 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -38,7 +38,7 @@ from .models import (BomItem, BomItemSubstitute, Part, PartAttachment, PartCategory, PartCategoryParameterTemplate, PartInternalPriceBreak, PartParameter, PartParameterTemplate, PartRelated, PartSellPriceBreak, - PartTestTemplate) + PartStocktake, PartTestTemplate) class CategoryList(APIDownloadMixin, ListCreateAPI): @@ -1696,6 +1696,27 @@ class PartParameterDetail(RetrieveUpdateDestroyAPI): serializer_class = part_serializers.PartParameterSerializer +class PartStocktakeFilter(rest_filters.FilterSet): + """Custom fitler for the PartStocktakeList endpoint""" + + class Meta: + """Metaclass options""" + + model = PartStocktake + fields = [ + 'part', + 'user', + ] + + +class PartStocktakeList(ListAPI): + """API endpoint for listing part stocktake information""" + + queryset = PartStocktake.objects.all() + serializer_class = part_serializers.PartStocktakeSerializer + filterset_class = PartStocktakeFilter + + class BomFilter(rest_filters.FilterSet): """Custom filters for the BOM list.""" @@ -2111,6 +2132,11 @@ part_api_urls = [ re_path(r'^.*$', PartParameterList.as_view(), name='api-part-parameter-list'), ])), + # Part stocktake data + re_path(r'^stocktake/', include([ + re_path(r'^.*$', PartStocktakeList.as_view(), name='api-part-stocktake-list'), + ])), + re_path(r'^thumbs/', include([ path('', PartThumbs.as_view(), name='api-part-thumbs'), re_path(r'^(?P\d+)/?', PartThumbsUpdate.as_view(), name='api-part-thumbs-update'), diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 45a0a5e55e..d924b6002d 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -31,7 +31,8 @@ from .models import (BomItem, BomItemSubstitute, Part, PartAttachment, PartCategory, PartCategoryParameterTemplate, PartInternalPriceBreak, PartParameter, PartParameterTemplate, PartPricing, PartRelated, - PartSellPriceBreak, PartStar, PartTestTemplate) + PartSellPriceBreak, PartStar, PartStocktake, + PartTestTemplate) class CategorySerializer(InvenTreeModelSerializer): @@ -504,6 +505,22 @@ class PartSerializer(RemoteImageMixin, InvenTreeModelSerializer): return self.instance +class PartStocktakeSerializer(InvenTreeModelSerializer): + """Serializer for the PartStocktake model""" + + class Meta: + """Metaclass options""" + + model = PartStocktake + fields = [ + 'pk', + 'date', + 'part', + 'quantity', + 'user', + ] + + class PartPricingSerializer(InvenTreeModelSerializer): """Serializer for Part pricing information"""