Fixed filters and GTIN retrieval.
This commit is contained in:
parent
9247c27278
commit
068d13261b
|
@ -11,5 +11,5 @@ router.register(r'products', GtinProductViewSet)
|
|||
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
|
||||
path('auth/', include('rest_framework.urls', namespace='rest_framework'))
|
||||
]
|
30
api/views.py
30
api/views.py
|
@ -1,6 +1,9 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework import viewsets
|
||||
from rest_framework import viewsets, status
|
||||
from rest_framework import permissions
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
import asset.gtin_service
|
||||
from api.serializers import ContainerSerializer, ContainerTypeSerializer, AssetSerializer, GtinProductSerializer
|
||||
from container.models import Container, ContainerType
|
||||
from asset.models import Asset, GtinProduct
|
||||
|
@ -36,7 +39,6 @@ class AssetViewSet(viewsets.ModelViewSet):
|
|||
filterset_fields = ['named_id', 'quantity']
|
||||
|
||||
|
||||
|
||||
class GtinProductViewSet(viewsets.ModelViewSet):
|
||||
"""
|
||||
API endpoint that allows containers to be viewed or edited.
|
||||
|
@ -46,3 +48,25 @@ class GtinProductViewSet(viewsets.ModelViewSet):
|
|||
permission_classes = [permissions.IsAuthenticated]
|
||||
filterset_fields = ['gtin']
|
||||
|
||||
def retrieve(self, request, pk=None):
|
||||
if pk:
|
||||
item = GtinProduct.objects.get(id=pk)
|
||||
serializer = GtinProductSerializer(item)
|
||||
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
|
||||
|
||||
items = GtinProduct.objects.all()
|
||||
serializer = GtinProductSerializer(items, many=True)
|
||||
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
|
||||
|
||||
@action(detail=True, methods=['GET'])
|
||||
def by_gtin(self, request, gtin=None):
|
||||
if gtin:
|
||||
item = asset.gtin_service.get_by_gtin(gtin=gtin)
|
||||
if item:
|
||||
serializer = GtinProductSerializer(item)
|
||||
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
|
||||
return Response(
|
||||
{"status": "failed", "reason": "Could not find a product for given GTIN", "gtin": gtin},
|
||||
status=status.HTTP_404_NOT_FOUND)
|
||||
return Response({"status": "failed", "reason": "No GTIN given, please provide a valid GTIN"},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
|
Loading…
Reference in New Issue