From 08fc21eb9baa121976dcb498116770b10b6e820e Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 11 Apr 2017 23:22:05 +1000 Subject: [PATCH 1/2] Added ability to mark project part as "output" (generated BY project) --- InvenTree/project/admin.py | 2 +- InvenTree/project/models.py | 4 ++++ InvenTree/project/serializers.py | 3 ++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/InvenTree/project/admin.py b/InvenTree/project/admin.py index 2d8b43b0d9..9224385d9a 100644 --- a/InvenTree/project/admin.py +++ b/InvenTree/project/admin.py @@ -12,7 +12,7 @@ class ProjectAdmin(admin.ModelAdmin): class ProjectPartAdmin(admin.ModelAdmin): - list_display = ('part', 'project', 'quantity') + list_display = ('part', 'project', 'quantity', 'output') class ProjectRunAdmin(admin.ModelAdmin): diff --git a/InvenTree/project/models.py b/InvenTree/project/models.py index c289f5ebd3..1958540699 100644 --- a/InvenTree/project/models.py +++ b/InvenTree/project/models.py @@ -64,6 +64,10 @@ class ProjectPart(models.Model): default=OVERAGE_ABSOLUTE, choices=OVARAGE_CODES.items()) + # Set if the part is generated by the project, + # rather than being consumed by the project + output = models.BooleanField(default=False) + def __str__(self): return "{quan} x {name}".format( name=self.part.name, diff --git a/InvenTree/project/serializers.py b/InvenTree/project/serializers.py index f4a0daecec..0dae3f7cbd 100644 --- a/InvenTree/project/serializers.py +++ b/InvenTree/project/serializers.py @@ -12,7 +12,8 @@ class ProjectPartSerializer(serializers.ModelSerializer): 'project', 'quantity', 'overage', - 'overage_type') + 'overage_type', + 'output') class ProjectBriefSerializer(serializers.ModelSerializer): From 4c07e8d8a0c6579e83a89e7cf9ebae83cf9e6a02 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 11 Apr 2017 23:33:08 +1000 Subject: [PATCH 2/2] Updated part API --- InvenTree/part/serializers.py | 26 +++++--------------------- InvenTree/part/urls.py | 3 +++ InvenTree/part/views.py | 18 ++++++++++++++---- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index 523b55f9eb..1ff66264e3 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -3,41 +3,25 @@ from rest_framework import serializers from .models import Part, PartCategory, PartParameter -class ParameterSerializer(serializers.ModelSerializer): +class PartParameterSerializer(serializers.ModelSerializer): """ Serializer for a PartParameter """ class Meta: model = PartParameter fields = ('pk', + 'part', + 'template', 'name', 'value', 'units') -class PartDetailSerializer(serializers.ModelSerializer): +class PartSerializer(serializers.ModelSerializer): """ Serializer for complete detail information of a part. Used when displaying all details of a single component. """ - params = ParameterSerializer(source='parameters', many=True) - - class Meta: - model = Part - fields = ('pk', - 'name', - 'IPN', - 'description', - 'category', - 'stock', - 'params') - - -class PartBriefSerializer(serializers.ModelSerializer): - """ Serializer for displaying overview of a part. - Used e.g. for displaying list of parts in a category. - """ - class Meta: model = Part fields = ('pk', @@ -60,7 +44,7 @@ class PartCategoryBriefSerializer(serializers.ModelSerializer): class PartCategoryDetailSerializer(serializers.ModelSerializer): # List of parts in this category - parts = PartBriefSerializer(many=True) + parts = PartSerializer(many=True) # List of child categories under this one children = PartCategoryBriefSerializer(many=True) diff --git a/InvenTree/part/urls.py b/InvenTree/part/urls.py index 601e2d74ee..de6c9c13a8 100644 --- a/InvenTree/part/urls.py +++ b/InvenTree/part/urls.py @@ -6,6 +6,9 @@ urlpatterns = [ # Single part detail url(r'^(?P[0-9]+)/$', views.PartDetail.as_view()), + # Part parameters list + url(r'^(?P[0-9]+)/parameters/$', views.PartParameters.as_view()), + # Part category detail url(r'^category/(?P[0-9]+)/$', views.PartCategoryDetail.as_view()), diff --git a/InvenTree/part/views.py b/InvenTree/part/views.py index 85451ef00e..a6a4794011 100644 --- a/InvenTree/part/views.py +++ b/InvenTree/part/views.py @@ -1,20 +1,30 @@ from rest_framework import generics -from .models import PartCategory, Part -from .serializers import PartBriefSerializer, PartDetailSerializer +from .models import PartCategory, Part, PartParameter +from .serializers import PartSerializer from .serializers import PartCategoryBriefSerializer, PartCategoryDetailSerializer +from .serializers import PartParameterSerializer class PartDetail(generics.RetrieveAPIView): queryset = Part.objects.all() - serializer_class = PartDetailSerializer + serializer_class = PartSerializer + + +class PartParameters(generics.ListAPIView): + + def get_queryset(self): + part_id = self.kwargs['pk'] + return PartParameter.objects.filter(part=part_id) + + serializer_class = PartParameterSerializer class PartList(generics.ListAPIView): queryset = Part.objects.all() - serializer_class = PartBriefSerializer + serializer_class = PartSerializer class PartCategoryDetail(generics.RetrieveAPIView):