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:
parent
17d9d25fb9
commit
c29827e45a
@ -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'),
|
||||||
]
|
]
|
||||||
|
@ -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})
|
||||||
|
|
||||||
|
@ -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'
|
||||||
]
|
]
|
||||||
|
@ -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 %}
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user