Implement Storage navigation and other helpful stuff

This commit is contained in:
2021-08-14 00:25:19 +02:00
parent c065720ded
commit e8538cd534
7 changed files with 145 additions and 18 deletions

View File

@@ -50,3 +50,6 @@ class DistributorSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = parts_models.Distributor
fields = '__all__'
class StockIncrementDecrementSerializer(serializers.Serializer):
increment = serializers.IntegerField()

View File

@@ -15,6 +15,7 @@ from django.utils import timezone
from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.throttling import AnonRateThrottle
from rest_framework.decorators import action
# Create your views here.
class UserViewSet(viewsets.ReadOnlyModelViewSet):
@@ -48,6 +49,19 @@ class PartsStockViewSet(viewsets.ModelViewSet):
serializer_class = StockSerializer
permission_classes = [permissions.DjangoModelPermissions]
@action(detail=True, methods=['patch'], name="change-stock-count")
def update_stock(self, request, pk=None):
stock = self.get_object()
serializer = StockIncrementDecrementSerializer(data=request.data)
if serializer.is_valid():
increment = serializer.data['increment']
if stock.atomic_increment(increment):
return Response({'status': 'Stock updated', 'update_value': increment})
else:
return Response({'status': 'Stock not updated. Would be negative'}, status=status.HTTP_400_BAD_REQUEST)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class PartsPackageViewSet(viewsets.ModelViewSet):
queryset = parts_models.Package.objects.all()
serializer_class = PackageSerializer