mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Add part-list API
- Deleted some old serializers - Simply list of parts - Search by name / description - Orderable by name
This commit is contained in:
parent
f1a5b3c1ca
commit
86a9b36c99
@ -1,20 +1,18 @@
|
|||||||
from django.conf.urls import url, include
|
from django.conf.urls import url, include
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from part.urls import part_api_urls, part_cat_api_urls
|
from company.urls import company_urls
|
||||||
from part.urls import bom_api_urls
|
|
||||||
from part.urls import part_urls
|
from part.urls import part_urls
|
||||||
from part.urls import supplier_part_urls
|
from part.urls import supplier_part_urls
|
||||||
|
|
||||||
from stock.urls import stock_api_urls, stock_api_loc_urls
|
|
||||||
from stock.urls import stock_urls
|
from stock.urls import stock_urls
|
||||||
|
|
||||||
# from supplier.urls import supplier_api_urls, supplier_api_part_urls
|
|
||||||
from company.urls import company_urls
|
|
||||||
from company.api import company_api_urls
|
|
||||||
|
|
||||||
from build.urls import build_urls
|
from build.urls import build_urls
|
||||||
|
|
||||||
|
from part.api import part_api_urls
|
||||||
|
from company.api import company_api_urls
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
|
|
||||||
@ -28,6 +26,7 @@ from users.urls import user_urls
|
|||||||
admin.site.site_header = "InvenTree Admin"
|
admin.site.site_header = "InvenTree Admin"
|
||||||
|
|
||||||
apipatterns = [
|
apipatterns = [
|
||||||
|
url(r'^part/', include(part_api_urls)),
|
||||||
url(r'^company/', include(company_api_urls)),
|
url(r'^company/', include(company_api_urls)),
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,15 +1,16 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django_filters.rest_framework import FilterSet, DjangoFilterBackend
|
from django_filters.rest_framework import FilterSet, 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
|
||||||
|
|
||||||
from .models import Company
|
from .models import Company
|
||||||
from .serializers import CompanySerializer
|
from .serializers import CompanySerializer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CompanyList(generics.ListCreateAPIView):
|
class CompanyList(generics.ListCreateAPIView):
|
||||||
|
|
||||||
serializer_class = CompanySerializer
|
serializer_class = CompanySerializer
|
||||||
@ -25,14 +26,14 @@ class CompanyList(generics.ListCreateAPIView):
|
|||||||
]
|
]
|
||||||
|
|
||||||
filter_fields = [
|
filter_fields = [
|
||||||
'name',
|
'name',
|
||||||
'is_customer',
|
'is_customer',
|
||||||
'is_supplier',
|
'is_supplier',
|
||||||
]
|
]
|
||||||
|
|
||||||
search_fields = [
|
search_fields = [
|
||||||
'name',
|
'name',
|
||||||
'description',
|
'description',
|
||||||
]
|
]
|
||||||
|
|
||||||
ordering_fields = [
|
ordering_fields = [
|
||||||
|
@ -1,202 +1,42 @@
|
|||||||
from .serializers import PartSerializer
|
# -*- coding: utf-8 -*-
|
||||||
from .serializers import PartCategorySerializer
|
from __future__ import unicode_literals
|
||||||
from .serializers import BomItemSerializer
|
|
||||||
|
|
||||||
from rest_framework import generics, permissions
|
|
||||||
|
|
||||||
from django_filters.rest_framework import FilterSet, DjangoFilterBackend
|
from django_filters.rest_framework import FilterSet, DjangoFilterBackend
|
||||||
|
from rest_framework import filters
|
||||||
|
from rest_framework import generics, permissions
|
||||||
|
|
||||||
from .models import PartCategory, Part, BomItem
|
from django.conf.urls import url
|
||||||
|
|
||||||
from InvenTree.models import FilterChildren
|
from .models import Part
|
||||||
|
from .serializers import PartSerializer
|
||||||
|
|
||||||
class PartDetail(generics.RetrieveUpdateDestroyAPIView):
|
|
||||||
"""
|
|
||||||
|
|
||||||
get:
|
|
||||||
Return detail on a single Part
|
|
||||||
|
|
||||||
post:
|
|
||||||
Update data for a single Part
|
|
||||||
|
|
||||||
delete:
|
|
||||||
Remove a part from the database
|
|
||||||
|
|
||||||
"""
|
|
||||||
queryset = Part.objects.all()
|
|
||||||
serializer_class = PartSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
class PartParamFilter(FilterSet):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = PartParameter
|
|
||||||
fields = ['part']
|
|
||||||
|
|
||||||
class PartParamList(generics.ListCreateAPIView):
|
|
||||||
"
|
|
||||||
|
|
||||||
get:
|
|
||||||
Return a list of all part parameters (with optional filters)
|
|
||||||
|
|
||||||
post:
|
|
||||||
Create a new part parameter
|
|
||||||
""
|
|
||||||
|
|
||||||
queryset = PartParameter.objects.all()
|
|
||||||
serializer_class = PartParameterSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
filter_backends = (DjangoFilterBackend,)
|
|
||||||
filter_class = PartParamFilter
|
|
||||||
|
|
||||||
|
|
||||||
class PartParamDetail(generics.RetrieveUpdateDestroyAPIView):
|
|
||||||
""
|
|
||||||
|
|
||||||
get:
|
|
||||||
Detail view of a single PartParameter
|
|
||||||
|
|
||||||
post:
|
|
||||||
Update data for a PartParameter
|
|
||||||
|
|
||||||
delete:
|
|
||||||
Remove a PartParameter from the database
|
|
||||||
|
|
||||||
"
|
|
||||||
|
|
||||||
queryset = PartParameter.objects.all()
|
|
||||||
serializer_class = PartParameterSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class PartFilter(FilterSet):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = Part
|
|
||||||
fields = ['category']
|
|
||||||
|
|
||||||
|
|
||||||
class PartList(generics.ListCreateAPIView):
|
class PartList(generics.ListCreateAPIView):
|
||||||
"""
|
|
||||||
|
|
||||||
get:
|
|
||||||
List of Parts, with optional filters
|
|
||||||
|
|
||||||
post:
|
|
||||||
Create a new Part
|
|
||||||
"""
|
|
||||||
|
|
||||||
queryset = Part.objects.all()
|
queryset = Part.objects.all()
|
||||||
serializer_class = PartSerializer
|
serializer_class = PartSerializer
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
filter_backends = (DjangoFilterBackend,)
|
|
||||||
filter_class = PartFilter
|
|
||||||
|
|
||||||
|
permission_classes = [
|
||||||
|
permissions.IsAuthenticatedOrReadOnly,
|
||||||
|
]
|
||||||
|
|
||||||
class PartCategoryDetail(generics.RetrieveUpdateDestroyAPIView):
|
filter_backends = [
|
||||||
"""
|
DjangoFilterBackend,
|
||||||
|
filters.SearchFilter,
|
||||||
|
filters.OrderingFilter,
|
||||||
|
]
|
||||||
|
|
||||||
get:
|
filter_fields = [
|
||||||
Return information on a single PartCategory
|
|
||||||
|
|
||||||
post:
|
]
|
||||||
Update a PartCategory
|
|
||||||
|
|
||||||
delete:
|
ordering_fields = [
|
||||||
Remove a PartCategory
|
'name',
|
||||||
|
]
|
||||||
|
|
||||||
"""
|
ordering = 'name'
|
||||||
queryset = PartCategory.objects.all()
|
|
||||||
serializer_class = PartCategorySerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
|
part_api_urls = [
|
||||||
|
|
||||||
class PartCategoryList(generics.ListCreateAPIView):
|
url(r'^.*$', PartList.as_view(), name='api-part-list'),
|
||||||
"""
|
]
|
||||||
|
|
||||||
get:
|
|
||||||
Return a list of all categories
|
|
||||||
(with optional filters)
|
|
||||||
|
|
||||||
post:
|
|
||||||
Create a new PartCategory
|
|
||||||
"""
|
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
params = self.request.query_params
|
|
||||||
|
|
||||||
categories = PartCategory.objects.all()
|
|
||||||
|
|
||||||
categories = FilterChildren(categories, params.get('parent', None))
|
|
||||||
|
|
||||||
return categories
|
|
||||||
|
|
||||||
queryset = PartCategory.objects.filter(parent=None)
|
|
||||||
serializer_class = PartCategorySerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
class PartTemplateDetail(generics.RetrieveUpdateDestroyAPIView):
|
|
||||||
""
|
|
||||||
|
|
||||||
get:
|
|
||||||
Return detail on a single PartParameterTemplate object
|
|
||||||
|
|
||||||
post:
|
|
||||||
Update a PartParameterTemplate object
|
|
||||||
|
|
||||||
delete:
|
|
||||||
Remove a PartParameterTemplate object
|
|
||||||
|
|
||||||
""
|
|
||||||
|
|
||||||
queryset = PartParameterTemplate.objects.all()
|
|
||||||
serializer_class = PartTemplateSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
|
|
||||||
class PartTemplateList(generics.ListCreateAPIView):
|
|
||||||
""
|
|
||||||
|
|
||||||
get:
|
|
||||||
Return a list of all PartParameterTemplate objects
|
|
||||||
(with optional query filters)
|
|
||||||
|
|
||||||
post:
|
|
||||||
Create a new PartParameterTemplate object
|
|
||||||
|
|
||||||
""
|
|
||||||
|
|
||||||
queryset = PartParameterTemplate.objects.all()
|
|
||||||
serializer_class = PartTemplateSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class BomItemDetail(generics.RetrieveUpdateDestroyAPIView):
|
|
||||||
|
|
||||||
queryset = BomItem.objects.all()
|
|
||||||
serializer_class = BomItemSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
|
|
||||||
|
|
||||||
class BomItemFilter(FilterSet):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = BomItem
|
|
||||||
fields = ['part', 'sub_part']
|
|
||||||
|
|
||||||
|
|
||||||
class BomItemList(generics.ListCreateAPIView):
|
|
||||||
|
|
||||||
queryset = BomItem.objects.all()
|
|
||||||
serializer_class = BomItemSerializer
|
|
||||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
|
||||||
filter_backends = (DjangoFilterBackend,)
|
|
||||||
filter_class = BomItemFilter
|
|
||||||
|
@ -1,33 +1,6 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from .models import Part, PartCategory
|
from .models import Part
|
||||||
from .models import BomItem
|
|
||||||
|
|
||||||
|
|
||||||
class BomItemSerializer(serializers.ModelSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = BomItem
|
|
||||||
fields = ('url',
|
|
||||||
'part',
|
|
||||||
'sub_part',
|
|
||||||
'quantity')
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
class PartParameterSerializer(serializers.HyperlinkedModelSerializer):
|
|
||||||
" Serializer for a PartParameter
|
|
||||||
"
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = PartParameter
|
|
||||||
fields = ('url',
|
|
||||||
'part',
|
|
||||||
'template',
|
|
||||||
'name',
|
|
||||||
'value',
|
|
||||||
'units')
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
class PartSerializer(serializers.ModelSerializer):
|
class PartSerializer(serializers.ModelSerializer):
|
||||||
@ -37,35 +10,18 @@ class PartSerializer(serializers.ModelSerializer):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Part
|
model = Part
|
||||||
fields = ('url',
|
fields = [
|
||||||
'name',
|
'url', # Link to the part detail page
|
||||||
'IPN',
|
'name',
|
||||||
'description',
|
'IPN',
|
||||||
'category',
|
'URL', # Link to an external URL (optional)
|
||||||
'stock',
|
'description',
|
||||||
'units',
|
'category',
|
||||||
'trackable',
|
'total_stock',
|
||||||
)
|
'available_stock',
|
||||||
|
'units',
|
||||||
|
'trackable',
|
||||||
class PartCategorySerializer(serializers.HyperlinkedModelSerializer):
|
'buildable',
|
||||||
|
'trackable',
|
||||||
class Meta:
|
'salable',
|
||||||
model = PartCategory
|
]
|
||||||
fields = ('url',
|
|
||||||
'name',
|
|
||||||
'description',
|
|
||||||
'parent',
|
|
||||||
'pathstring')
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
class PartTemplateSerializer(serializers.HyperlinkedModelSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = PartParameterTemplate
|
|
||||||
fields = ('url',
|
|
||||||
'name',
|
|
||||||
'units',
|
|
||||||
'format')
|
|
||||||
"""
|
|
||||||
|
@ -2,7 +2,6 @@ from django.conf.urls import url, include
|
|||||||
from django.views.generic.base import RedirectView
|
from django.views.generic.base import RedirectView
|
||||||
|
|
||||||
from . import views
|
from . import views
|
||||||
from . import api
|
|
||||||
|
|
||||||
supplier_part_detail_urls = [
|
supplier_part_detail_urls = [
|
||||||
url(r'edit/?', views.SupplierPartEdit.as_view(), name='supplier-part-edit'),
|
url(r'edit/?', views.SupplierPartEdit.as_view(), name='supplier-part-edit'),
|
||||||
@ -17,38 +16,6 @@ supplier_part_urls = [
|
|||||||
url(r'^(?P<pk>\d+)/', include(supplier_part_detail_urls)),
|
url(r'^(?P<pk>\d+)/', include(supplier_part_detail_urls)),
|
||||||
]
|
]
|
||||||
|
|
||||||
# URL list for part category API
|
|
||||||
part_cat_api_urls = [
|
|
||||||
|
|
||||||
# Part category detail
|
|
||||||
url(r'^(?P<pk>[0-9]+)/?$', api.PartCategoryDetail.as_view(), name='partcategory-detail'),
|
|
||||||
|
|
||||||
# List of top-level categories
|
|
||||||
url(r'^\?*.*/?$', api.PartCategoryList.as_view()),
|
|
||||||
url(r'^$', api.PartCategoryList.as_view())
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
# URL list for part API
|
|
||||||
part_api_urls = [
|
|
||||||
|
|
||||||
# Individual part
|
|
||||||
url(r'^(?P<pk>[0-9]+)/?$', api.PartDetail.as_view(), name='part-detail'),
|
|
||||||
|
|
||||||
# List parts with optional filters
|
|
||||||
url(r'^\?.*/?$', api.PartList.as_view()),
|
|
||||||
url(r'^$', api.PartList.as_view()),
|
|
||||||
]
|
|
||||||
|
|
||||||
bom_api_urls = [
|
|
||||||
# Bom Item detail
|
|
||||||
url(r'^(?P<pk>[0-9]+)/?$', api.BomItemDetail.as_view(), name='bomitem-detail'),
|
|
||||||
|
|
||||||
# List of top-level categories
|
|
||||||
url(r'^\?*.*/?$', api.BomItemList.as_view()),
|
|
||||||
url(r'^$', api.BomItemList.as_view())
|
|
||||||
]
|
|
||||||
|
|
||||||
part_detail_urls = [
|
part_detail_urls = [
|
||||||
url(r'^edit/?', views.PartEdit.as_view(), name='part-edit'),
|
url(r'^edit/?', views.PartEdit.as_view(), name='part-edit'),
|
||||||
url(r'^delete/?', views.PartDelete.as_view(), name='part-delete'),
|
url(r'^delete/?', views.PartDelete.as_view(), name='part-delete'),
|
||||||
|
Loading…
Reference in New Issue
Block a user