diff --git a/InvenTree/build/api.py b/InvenTree/build/api.py index 1cb973fe05..779c248fe5 100644 --- a/InvenTree/build/api.py +++ b/InvenTree/build/api.py @@ -11,11 +11,12 @@ from rest_framework import generics from django.conf.urls import url, include +from InvenTree.api import AttachmentMixin from InvenTree.helpers import str2bool, isNull from InvenTree.status_codes import BuildStatus -from .models import Build, BuildItem -from .serializers import BuildSerializer, BuildItemSerializer +from .models import Build, BuildItem, BuildOrderAttachment +from .serializers import BuildAttachmentSerializer, BuildSerializer, BuildItemSerializer class BuildList(generics.ListCreateAPIView): @@ -226,14 +227,40 @@ class BuildItemList(generics.ListCreateAPIView): ] -build_item_api_urls = [ - url('^.*$', BuildItemList.as_view(), name='api-build-item-list'), -] +class BuildAttachmentList(generics.ListCreateAPIView, AttachmentMixin): + """ + API endpoint for listing (and creating) BuildOrderAttachment objects + """ + + queryset = BuildOrderAttachment.objects.all() + serializer_class = BuildAttachmentSerializer + + +class BuildAttachmentDetail(generics.RetrieveUpdateDestroyAPIView, AttachmentMixin): + """ + Detail endpoint for a BuildOrderAttachment object + """ + + queryset = BuildOrderAttachment.objects.all() + serializer_class = BuildAttachmentSerializer + build_api_urls = [ - url(r'^item/', include(build_item_api_urls)), + # Attachments + url(r'^attachment/', include([ + url(r'^(?P\d+)/', BuildAttachmentDetail.as_view(), name='api-build-attachment-detail'), + url('^.*$', BuildAttachmentList.as_view(), name='api-build-attachment-list'), + ])), + + # Build Items + url(r'^item/', include([ + url('^.*$', BuildItemList.as_view(), name='api-build-item-list') + ])), + + # Build Detail url(r'^(?P\d+)/', BuildDetail.as_view(), name='api-build-detail'), + # Build List url(r'^.*$', BuildList.as_view(), name='api-build-list'), ] diff --git a/InvenTree/build/serializers.py b/InvenTree/build/serializers.py index d8573cfa70..06c4f36ebb 100644 --- a/InvenTree/build/serializers.py +++ b/InvenTree/build/serializers.py @@ -10,13 +10,13 @@ from django.db.models import BooleanField from rest_framework import serializers -from InvenTree.serializers import InvenTreeModelSerializer +from InvenTree.serializers import InvenTreeModelSerializer, InvenTreeAttachmentSerializerField from stock.serializers import StockItemSerializerBrief from stock.serializers import LocationSerializer from part.serializers import PartSerializer, PartBriefSerializer -from .models import Build, BuildItem +from .models import Build, BuildItem, BuildOrderAttachment class BuildSerializer(InvenTreeModelSerializer): @@ -143,3 +143,21 @@ class BuildItemSerializer(InvenTreeModelSerializer): 'stock_item_detail', 'quantity' ] + + +class BuildAttachmentSerializer(InvenTreeModelSerializer): + """ + Serializer for a BuildAttachment + """ + + attachment = InvenTreeAttachmentSerializerField(required=True) + + class Meta: + model = BuildOrderAttachment + + fields = [ + 'pk', + 'build', + 'attachment', + 'comment' + ]