JSON api for stock items

This commit is contained in:
Oliver 2018-04-29 21:02:40 +10:00
parent 9cc0780367
commit f74e176579
4 changed files with 64 additions and 53 deletions

View File

@ -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'

View File

@ -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'),
]

View File

@ -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):

View File

@ -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 = [