From 70f1097ea0c7ad996d8ac0b2d7e7f4482186f792 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sun, 5 May 2019 09:05:44 +1000 Subject: [PATCH] API endpoint for accessing part star information --- InvenTree/part/api.py | 42 +++++++++++++++++++++++++++++++++-- InvenTree/part/serializers.py | 20 ++++++++++++++++- 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 27a5b24894..d248edac98 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -12,12 +12,13 @@ from rest_framework import generics, permissions from django.db.models import Q from django.conf.urls import url, include -from .models import Part, PartCategory, BomItem +from .models import Part, PartCategory, BomItem, PartStar from .models import SupplierPart, SupplierPriceBreak from .serializers import PartSerializer, BomItemSerializer from .serializers import SupplierPartSerializer, SupplierPriceBreakSerializer from .serializers import CategorySerializer +from .serializers import PartStarSerializer from InvenTree.views import TreeSerializer @@ -150,8 +151,37 @@ class PartList(generics.ListCreateAPIView): ] +class PartStarList(generics.ListCreateAPIView): + """ API endpoint for accessing a list of PartStar objects. + + - GET: Return list of PartStar objects + - POST: Create a new PartStar object + """ + + queryset = PartStar.objects.all() + serializer_class = PartStarSerializer + + permission_classes = [ + permissions.IsAuthenticatedOrReadOnly, + ] + + filter_backends = [ + DjangoFilterBackend, + filters.SearchFilter + ] + + filter_fields = [ + 'part', + 'user', + ] + + search_fields = [ + 'partname' + ] + + class BomList(generics.ListCreateAPIView): - """ API endpoing for accessing a list of BomItem objects + """ API endpoint for accessing a list of BomItem objects. - GET: Return list of BomItem objects - POST: Create a new BomItem object @@ -267,12 +297,20 @@ supplier_part_api_urls = [ url(r'^.*$', SupplierPartList.as_view(), name='api-part-supplier-list'), ] +part_star_api_urls = [ + + # Catchall + url(r'^.*$', PartStarList.as_view(), name='api-part-star-list'), +] + part_api_urls = [ url(r'^tree/?', PartCategoryTree.as_view(), name='api-part-tree'), url(r'^category/', include(cat_api_urls)), url(r'^supplier/', include(supplier_part_api_urls)), + url(r'^star/', include(part_star_api_urls)), + url(r'^price-break/?', SupplierPriceBreakList.as_view(), name='api-part-supplier-price'), url(r'^(?P\d+)/', PartDetail.as_view(), name='api-part-detail'), diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index e5c23b730a..dff50f06d7 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -4,8 +4,10 @@ JSON serializers for Part app from rest_framework import serializers -from .models import Part, PartCategory, BomItem +from .models import Part, PartStar, PartAttachment from .models import SupplierPart, SupplierPriceBreak +from .models import PartCategory +from .models import BomItem from InvenTree.serializers import InvenTreeModelSerializer @@ -75,6 +77,22 @@ class PartSerializer(serializers.ModelSerializer): ] +class PartStarSerializer(InvenTreeModelSerializer): + """ Serializer for a PartStar object """ + + partname = serializers.CharField(source='part.name', read_only=True) + username = serializers.CharField(source='user.username', read_only=True) + + class Meta: + model = PartStar + fields = [ + 'part', + 'partname', + 'user', + 'username', + ] + + class BomItemSerializer(InvenTreeModelSerializer): """ Serializer for BomItem object """