From 3511ce29ee9e4ec38f820d025323903b094dcd17 Mon Sep 17 00:00:00 2001 From: Oliver Date: Fri, 4 May 2018 01:33:21 +1000 Subject: [PATCH] Added StockLocation API --- InvenTree/stock/api.py | 49 ++++++++++++++++------------------ InvenTree/stock/serializers.py | 11 +++++--- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index 99b22d11e3..b754c8fc7a 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -45,6 +45,27 @@ class StockFilter(FilterSet): fields = ['quantity', 'part', 'location'] +class StockLocationList(generics.ListCreateAPIView): + + queryset = StockLocation.objects.all() + + serializer_class = LocationSerializer + + permission_classes = [ + permissions.IsAuthenticatedOrReadOnly, + ] + + filter_backends = [ + DjangoFilterBackend, + filters.SearchFilter, + filters.OrderingFilter, + ] + + filter_fields = [ + 'parent', + ] + + class StockList(generics.ListCreateAPIView): """ @@ -129,32 +150,6 @@ class LocationDetail(generics.RetrieveUpdateDestroyAPIView): permission_classes = (permissions.IsAuthenticatedOrReadOnly,) -class StockLocationFilter(FilterSet): - - class Meta: - model = StockLocation - fields = ['parent'] - - -class LocationList(generics.ListCreateAPIView): - """ - - get: - Return a list of all StockLocation objects - (with optional query filter) - - post: - Create a new StockLocation - - """ - - queryset = StockLocation.objects.all() - serializer_class = LocationSerializer - permission_classes = (permissions.IsAuthenticatedOrReadOnly,) - filter_backends = (DjangoFilterBackend,) - filter_class = StockLocationFilter - - stock_endpoints = [ url(r'^$', StockDetail.as_view(), name='stockitem-detail'), ] @@ -168,6 +163,8 @@ stock_api_urls = [ # Detail for a single stock item url(r'^(?P[0-9]+)/', include(stock_endpoints)), + url(r'location/?', StockLocationList.as_view(), name='api-location-list'), + url(r'location/(?P\d+)/', include(location_endpoints)), url(r'^tree/?', StockCategoryTree.as_view(), name='api-stock-tree'), diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index 52b605d651..eb3217b524 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -67,14 +67,19 @@ class StockQuantitySerializer(serializers.ModelSerializer): fields = ('quantity',) -class LocationSerializer(serializers.HyperlinkedModelSerializer): +class LocationSerializer(serializers.ModelSerializer): """ Detailed information about a stock location """ + url = serializers.CharField(source='get_absolute_url', read_only=True) + class Meta: model = StockLocation - fields = ('url', + fields = [ + 'pk', + 'url', 'name', 'description', 'parent', - 'pathstring') + 'pathstring' + ]