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

Add API endpoint and serializer for BuildItem model

This commit is contained in:
Oliver Walters 2019-04-29 22:59:42 +10:00
parent 17d9d25fb9
commit c29827e45a
5 changed files with 49 additions and 7 deletions

View File

@ -9,10 +9,10 @@ from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters from rest_framework import filters
from rest_framework import generics, permissions from rest_framework import generics, permissions
from django.conf.urls import url from django.conf.urls import url, include
from .models import Build from .models import Build, BuildItem
from .serializers import BuildSerializer from .serializers import BuildSerializer, BuildItemSerializer
class BuildList(generics.ListCreateAPIView): class BuildList(generics.ListCreateAPIView):
@ -36,10 +36,37 @@ class BuildList(generics.ListCreateAPIView):
] ]
filter_fields = [ filter_fields = [
'part', 'build',
] ]
build_api_urls = [ class BuildItemList(generics.ListCreateAPIView):
url(r'^.*$', BuildList.as_view(), name='api-build-list') """ API endpoint for accessing a list of BuildItem objects
- GET: Return list of objects
- POST: Create a new BuildItem object
"""
queryset = BuildItem.objects.all()
serializer_class = BuildItemSerializer
permission_classes = [
permissions.IsAuthenticatedOrReadOnly,
]
filter_fields = [
'build',
'part',
'stock_item'
]
build_item_api_urls = [
url('^.*$', BuildItemList.as_view(), name='api-build-item-list'),
]
build_api_urls = [
url(r'^item/?', include(build_item_api_urls)),
url(r'^.*$', BuildList.as_view(), name='api-build-list'),
] ]

View File

@ -28,6 +28,9 @@ class Build(models.Model):
notes: Text notes notes: Text notes
""" """
def __str__(self):
return "Build {q} x {part}".format(q=self.quantity, part=str(self.part))
def get_absolute_url(self): def get_absolute_url(self):
return reverse('build-detail', kwargs={'pk': self.id}) return reverse('build-detail', kwargs={'pk': self.id})

View File

@ -34,10 +34,13 @@ class BuildSerializer(InvenTreeModelSerializer):
class BuildItemSerializer(InvenTreeModelSerializer): class BuildItemSerializer(InvenTreeModelSerializer):
""" Serializes a BuildItem object """ """ Serializes a BuildItem object """
part = serializers.CharField(source='stock_item.part', read_only=True)
class Meta: class Meta:
model = BuildItem model = BuildItem
fields = [ fields = [
'build', 'build',
'stock', 'part',
'stock_item',
'quantity' 'quantity'
] ]

View File

@ -73,6 +73,7 @@
{% endif %} {% endif %}
</table> </table>
{% if build.is_active %}
<h3>Required Parts</h3> <h3>Required Parts</h3>
<table class='table table-striped' id='build-list' data-sorting='true'> <table class='table table-striped' id='build-list' data-sorting='true'>
<thead> <thead>
@ -93,6 +94,8 @@
</tbody> </tbody>
</table> </table>
{% endif %}
{% include 'modals.html' %} {% include 'modals.html' %}
{% endblock %} {% endblock %}

View File

@ -307,6 +307,12 @@ class Part(models.Model):
def used_in_count(self): def used_in_count(self):
return self.used_in.count() return self.used_in.count()
def required_parts(self):
parts = []
for bom in self.bom_items.all():
parts.append(bom.sub_part)
return parts
@property @property
def supplier_count(self): def supplier_count(self):
# Return the number of supplier parts available for this part # Return the number of supplier parts available for this part