Implement Storage navigation and other helpful stuff
This commit is contained in:
@@ -50,3 +50,6 @@ class DistributorSerializer(serializers.HyperlinkedModelSerializer):
|
||||
class Meta:
|
||||
model = parts_models.Distributor
|
||||
fields = '__all__'
|
||||
|
||||
class StockIncrementDecrementSerializer(serializers.Serializer):
|
||||
increment = serializers.IntegerField()
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user