From 9b7977a2176b79afea7ff64086238a8788cfea0b Mon Sep 17 00:00:00 2001 From: eeintech Date: Wed, 8 Jul 2020 09:43:09 -0500 Subject: [PATCH] API: Allow part deletion if inactive --- InvenTree/part/api.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index ed29ccbab6..472ab1996e 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -190,7 +190,7 @@ class PartThumbs(generics.ListAPIView): return Response(data) -class PartDetail(generics.RetrieveUpdateAPIView): +class PartDetail(generics.RetrieveUpdateDestroyAPIView): """ API endpoint for detail view of a single Part object """ queryset = Part.objects.all() @@ -229,6 +229,18 @@ class PartDetail(generics.RetrieveUpdateAPIView): return self.serializer_class(*args, **kwargs) + def destroy(self, request, *args, **kwargs): + # Retrieve part + part = Part.objects.get(pk=int(kwargs['pk'])) + # Check if inactive + if not part.active: + # Delete + return super(PartDetail, self).destroy(request, *args, **kwargs) + else: + # Return 405 error + message = f'Part \'{part.name}\' (pk = {part.pk}) is active: cannot delete' + return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED, data=message) + class PartList(generics.ListCreateAPIView): """ API endpoint for accessing a list of Part objects