mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
JSON api for stock items
This commit is contained in:
parent
9cc0780367
commit
f74e176579
@ -89,12 +89,10 @@ TEMPLATES = [
|
||||
},
|
||||
]
|
||||
|
||||
print(os.path.join(BASE_DIR, 'templates'))
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'EXCEPTION_HANDLER': 'InvenTree.utils.api_exception_handler',
|
||||
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
|
||||
'PAGE_SIZE': 50,
|
||||
# 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
|
||||
# 'PAGE_SIZE': 50,
|
||||
}
|
||||
|
||||
WSGI_APPLICATION = 'InvenTree.wsgi.application'
|
||||
|
@ -1,9 +1,9 @@
|
||||
from django_filters.rest_framework import FilterSet, DjangoFilterBackend
|
||||
from django_filters import NumberFilter
|
||||
|
||||
from rest_framework import generics, permissions, response
|
||||
from rest_framework import generics, permissions, response, filters
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.conf.urls import url, include
|
||||
|
||||
# from InvenTree.models import FilterChildren
|
||||
from .models import StockLocation, StockItem
|
||||
@ -57,10 +57,26 @@ class StockList(generics.ListCreateAPIView):
|
||||
"""
|
||||
|
||||
queryset = StockItem.objects.all()
|
||||
|
||||
serializer_class = StockItemSerializer
|
||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
||||
filter_backends = (DjangoFilterBackend,)
|
||||
filter_class = StockFilter
|
||||
|
||||
permission_classes = [
|
||||
permissions.IsAuthenticatedOrReadOnly,
|
||||
]
|
||||
|
||||
filter_backends = [
|
||||
DjangoFilterBackend,
|
||||
filters.SearchFilter,
|
||||
filters.OrderingFilter,
|
||||
]
|
||||
|
||||
filter_fields = [
|
||||
'part',
|
||||
'location',
|
||||
'supplier_part',
|
||||
'customer',
|
||||
'status',
|
||||
]
|
||||
|
||||
|
||||
class StockStocktakeEndpoint(generics.UpdateAPIView):
|
||||
@ -138,6 +154,22 @@ class LocationList(generics.ListCreateAPIView):
|
||||
filter_class = StockLocationFilter
|
||||
|
||||
|
||||
stock_endpoints = [
|
||||
url(r'^$', StockDetail.as_view(), name='stockitem-detail'),
|
||||
]
|
||||
|
||||
location_endpoints = [
|
||||
url(r'^$', LocationDetail.as_view(), name='stocklocation-detail'),
|
||||
]
|
||||
|
||||
|
||||
stock_api_urls = [
|
||||
# Detail for a single stock item
|
||||
url(r'^(?P<pk>[0-9]+)/', include(stock_endpoints)),
|
||||
|
||||
url(r'location/(?P<pk>\d+)/', include(location_endpoints)),
|
||||
|
||||
url(r'^tree/?', StockCategoryTree.as_view(), name='api-stock-tree'),
|
||||
|
||||
url(r'^.*$', StockList.as_view(), name='api-stock-list'),
|
||||
]
|
@ -3,32 +3,40 @@ from rest_framework import serializers
|
||||
from .models import StockItem, StockLocation
|
||||
|
||||
|
||||
class StockItemSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class StockItemSerializer(serializers.ModelSerializer):
|
||||
""" Serializer for a StockItem
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = StockItem
|
||||
fields = ('url',
|
||||
'part',
|
||||
'supplier_part',
|
||||
'location',
|
||||
'quantity',
|
||||
'status',
|
||||
'notes',
|
||||
'updated',
|
||||
'stocktake_date',
|
||||
'stocktake_user',
|
||||
'review_needed',
|
||||
'expected_arrival')
|
||||
fields = [
|
||||
'pk',
|
||||
'url',
|
||||
'part',
|
||||
'supplier_part',
|
||||
'location',
|
||||
'belongs_to',
|
||||
'customer',
|
||||
'quantity',
|
||||
'serial',
|
||||
'batch',
|
||||
'status',
|
||||
'notes',
|
||||
'updated',
|
||||
'stocktake_date',
|
||||
'stocktake_user',
|
||||
'review_needed',
|
||||
]
|
||||
|
||||
""" These fields are read-only in this context.
|
||||
They can be updated by accessing the appropriate API endpoints
|
||||
"""
|
||||
read_only_fields = ('stocktake_date',
|
||||
'stocktake_user',
|
||||
'updated',
|
||||
'quantity',)
|
||||
read_only_fields = [
|
||||
'stocktake_date',
|
||||
'stocktake_user',
|
||||
'updated',
|
||||
'quantity',
|
||||
]
|
||||
|
||||
|
||||
class StockQuantitySerializer(serializers.ModelSerializer):
|
||||
|
@ -1,33 +1,6 @@
|
||||
from django.conf.urls import url, include
|
||||
|
||||
from . import views
|
||||
from . import api
|
||||
|
||||
stock_endpoints = [
|
||||
url(r'^$', api.StockDetail.as_view(), name='stockitem-detail'),
|
||||
|
||||
url(r'^stocktake/?$', api.StockStocktakeEndpoint.as_view(), name='stockitem-stocktake'),
|
||||
|
||||
url(r'^add-stock/?$', api.AddStockEndpoint.as_view(), name='stockitem-add-stock'),
|
||||
]
|
||||
|
||||
stock_api_urls = [
|
||||
# Detail for a single stock item
|
||||
url(r'^(?P<pk>[0-9]+)/', include(stock_endpoints)),
|
||||
|
||||
# List all stock items, with optional filters
|
||||
url(r'^\?.*/?$', api.StockList.as_view()),
|
||||
url(r'^$', api.StockList.as_view()),
|
||||
]
|
||||
|
||||
stock_api_loc_urls = [
|
||||
url(r'^(?P<pk>[0-9]+)/?$', api.LocationDetail.as_view(), name='stocklocation-detail'),
|
||||
|
||||
url(r'^\?.*/?$', api.LocationList.as_view()),
|
||||
|
||||
url(r'^$', api.LocationList.as_view())
|
||||
]
|
||||
|
||||
|
||||
# URL list for web interface
|
||||
stock_location_detail_urls = [
|
||||
|
Loading…
Reference in New Issue
Block a user