2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00

Merge pull request #29 from SchrodingersGat/master

Updated parts API
This commit is contained in:
Oliver 2017-04-11 23:33:57 +10:00 committed by GitHub
commit af79c937fd
6 changed files with 29 additions and 27 deletions

View File

@ -3,41 +3,25 @@ from rest_framework import serializers
from .models import Part, PartCategory, PartParameter from .models import Part, PartCategory, PartParameter
class ParameterSerializer(serializers.ModelSerializer): class PartParameterSerializer(serializers.ModelSerializer):
""" Serializer for a PartParameter """ Serializer for a PartParameter
""" """
class Meta: class Meta:
model = PartParameter model = PartParameter
fields = ('pk', fields = ('pk',
'part',
'template',
'name', 'name',
'value', 'value',
'units') 'units')
class PartDetailSerializer(serializers.ModelSerializer): class PartSerializer(serializers.ModelSerializer):
""" Serializer for complete detail information of a part. """ Serializer for complete detail information of a part.
Used when displaying all details of a single component. 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: class Meta:
model = Part model = Part
fields = ('pk', fields = ('pk',
@ -60,7 +44,7 @@ class PartCategoryBriefSerializer(serializers.ModelSerializer):
class PartCategoryDetailSerializer(serializers.ModelSerializer): class PartCategoryDetailSerializer(serializers.ModelSerializer):
# List of parts in this category # List of parts in this category
parts = PartBriefSerializer(many=True) parts = PartSerializer(many=True)
# List of child categories under this one # List of child categories under this one
children = PartCategoryBriefSerializer(many=True) children = PartCategoryBriefSerializer(many=True)

View File

@ -6,6 +6,9 @@ urlpatterns = [
# Single part detail # Single part detail
url(r'^(?P<pk>[0-9]+)/$', views.PartDetail.as_view()), url(r'^(?P<pk>[0-9]+)/$', views.PartDetail.as_view()),
# Part parameters list
url(r'^(?P<pk>[0-9]+)/parameters/$', views.PartParameters.as_view()),
# Part category detail # Part category detail
url(r'^category/(?P<pk>[0-9]+)/$', views.PartCategoryDetail.as_view()), url(r'^category/(?P<pk>[0-9]+)/$', views.PartCategoryDetail.as_view()),

View File

@ -1,20 +1,30 @@
from rest_framework import generics from rest_framework import generics
from .models import PartCategory, Part from .models import PartCategory, Part, PartParameter
from .serializers import PartBriefSerializer, PartDetailSerializer from .serializers import PartSerializer
from .serializers import PartCategoryBriefSerializer, PartCategoryDetailSerializer from .serializers import PartCategoryBriefSerializer, PartCategoryDetailSerializer
from .serializers import PartParameterSerializer
class PartDetail(generics.RetrieveAPIView): class PartDetail(generics.RetrieveAPIView):
queryset = Part.objects.all() 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): class PartList(generics.ListAPIView):
queryset = Part.objects.all() queryset = Part.objects.all()
serializer_class = PartBriefSerializer serializer_class = PartSerializer
class PartCategoryDetail(generics.RetrieveAPIView): class PartCategoryDetail(generics.RetrieveAPIView):

View File

@ -12,7 +12,7 @@ class ProjectAdmin(admin.ModelAdmin):
class ProjectPartAdmin(admin.ModelAdmin): class ProjectPartAdmin(admin.ModelAdmin):
list_display = ('part', 'project', 'quantity') list_display = ('part', 'project', 'quantity', 'output')
class ProjectRunAdmin(admin.ModelAdmin): class ProjectRunAdmin(admin.ModelAdmin):

View File

@ -64,6 +64,10 @@ class ProjectPart(models.Model):
default=OVERAGE_ABSOLUTE, default=OVERAGE_ABSOLUTE,
choices=OVARAGE_CODES.items()) 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): def __str__(self):
return "{quan} x {name}".format( return "{quan} x {name}".format(
name=self.part.name, name=self.part.name,

View File

@ -12,7 +12,8 @@ class ProjectPartSerializer(serializers.ModelSerializer):
'project', 'project',
'quantity', 'quantity',
'overage', 'overage',
'overage_type') 'overage_type',
'output')
class ProjectBriefSerializer(serializers.ModelSerializer): class ProjectBriefSerializer(serializers.ModelSerializer):