diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 7e6660f737..1083caf3a6 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -7,8 +7,8 @@ from rest_framework import generics, permissions from django.conf.urls import url -from .models import Part, PartCategory -from .serializers import PartSerializer +from .models import Part, PartCategory, BomItem +from .serializers import PartSerializer, BomItemSerializer from InvenTree.views import TreeSerializer @@ -49,9 +49,31 @@ class PartList(generics.ListCreateAPIView): ] +class BomList(generics.ListAPIView): + + queryset = BomItem.objects.all() + serializer_class = BomItemSerializer + + permission_classes = [ + permissions.IsAuthenticatedOrReadOnly, + ] + + filter_backends = [ + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ] + + filter_fields = [ + 'part', + 'sub_part' + ] + + part_api_urls = [ url(r'^tree/?', PartCategoryTree.as_view(), name='api-part-tree'), + url(r'^bom/?', BomList.as_view(), name='api-bom-list'), url(r'^.*$', PartList.as_view(), name='api-part-list'), ] diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 5a8c78c211..5812c40d99 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Part, PartCategory +from .models import Part, PartCategory, BomItem class CategoryBriefSerializer(serializers.ModelSerializer): @@ -12,6 +12,7 @@ class CategoryBriefSerializer(serializers.ModelSerializer): fields = [ 'pk', 'name', + 'description', 'pathstring', 'url', ] @@ -27,6 +28,7 @@ class PartBriefSerializer(serializers.ModelSerializer): 'pk', 'url', 'name', + 'description', ] @@ -35,6 +37,7 @@ class PartSerializer(serializers.ModelSerializer): Used when displaying all details of a single component. """ + url = serializers.CharField(source='get_absolute_url', read_only=True) category = CategoryBriefSerializer(many=False, read_only=True) class Meta: @@ -55,3 +58,21 @@ class PartSerializer(serializers.ModelSerializer): 'trackable', 'salable', ] + + +class BomItemSerializer(serializers.ModelSerializer): + + url = serializers.CharField(source='get_absolute_url', read_only=True) + + part = PartBriefSerializer(many=False, read_only=True) + sub_part = PartBriefSerializer(many=False, read_only=True) + + class Meta: + model = BomItem + fields = [ + 'pk', + 'url', + 'part', + 'sub_part', + 'quantity' + ] \ No newline at end of file diff --git a/InvenTree/part/templates/part/bom.html b/InvenTree/part/templates/part/bom.html index 3b08de3f08..ba4b80e408 100644 --- a/InvenTree/part/templates/part/bom.html +++ b/InvenTree/part/templates/part/bom.html @@ -11,30 +11,7 @@
Part | -Description | -Quantity | -- |
---|---|---|---|
{{ sub_part.name }} | -{{ sub_part.description }} | -{{ bom_item.quantity }} | -- - - | -