mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 05:05:42 +00:00 
			
		
		
		
	Add API endpoint and serializer for BuildItem model
This commit is contained in:
		| @@ -9,10 +9,10 @@ from django_filters.rest_framework import DjangoFilterBackend | ||||
| from rest_framework import filters | ||||
| from rest_framework import generics, permissions | ||||
|  | ||||
| from django.conf.urls import url | ||||
| from django.conf.urls import url, include | ||||
|  | ||||
| from .models import Build | ||||
| from .serializers import BuildSerializer | ||||
| from .models import Build, BuildItem | ||||
| from .serializers import BuildSerializer, BuildItemSerializer | ||||
|  | ||||
|  | ||||
| class BuildList(generics.ListCreateAPIView): | ||||
| @@ -36,10 +36,37 @@ class BuildList(generics.ListCreateAPIView): | ||||
|     ] | ||||
|  | ||||
|     filter_fields = [ | ||||
|         'part', | ||||
|         'build', | ||||
|     ] | ||||
|  | ||||
|  | ||||
| build_api_urls = [ | ||||
|     url(r'^.*$', BuildList.as_view(), name='api-build-list') | ||||
| class BuildItemList(generics.ListCreateAPIView): | ||||
|     """ 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 | ||||
|     """ | ||||
|  | ||||
|     def __str__(self): | ||||
|         return "Build {q} x {part}".format(q=self.quantity, part=str(self.part)) | ||||
|  | ||||
|     def get_absolute_url(self): | ||||
|         return reverse('build-detail', kwargs={'pk': self.id}) | ||||
|  | ||||
|   | ||||
| @@ -34,10 +34,13 @@ class BuildSerializer(InvenTreeModelSerializer): | ||||
| class BuildItemSerializer(InvenTreeModelSerializer): | ||||
|     """ Serializes a BuildItem object """ | ||||
|  | ||||
|     part = serializers.CharField(source='stock_item.part', read_only=True) | ||||
|  | ||||
|     class Meta: | ||||
|         model = BuildItem | ||||
|         fields = [ | ||||
|             'build', | ||||
|             'stock', | ||||
|             'part', | ||||
|             'stock_item', | ||||
|             'quantity' | ||||
|         ] | ||||
|   | ||||
| @@ -73,6 +73,7 @@ | ||||
| {% endif %} | ||||
| </table> | ||||
|  | ||||
| {% if build.is_active %} | ||||
| <h3>Required Parts</h3> | ||||
| <table class='table table-striped' id='build-list' data-sorting='true'> | ||||
| <thead> | ||||
| @@ -93,6 +94,8 @@ | ||||
| </tbody> | ||||
| </table> | ||||
|  | ||||
| {% endif %} | ||||
|  | ||||
| {% include 'modals.html' %} | ||||
|  | ||||
| {% endblock %} | ||||
|   | ||||
| @@ -307,6 +307,12 @@ class Part(models.Model): | ||||
|     def used_in_count(self): | ||||
|         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 | ||||
|     def supplier_count(self): | ||||
|         # Return the number of supplier parts available for this part | ||||
|   | ||||
		Reference in New Issue
	
	Block a user