diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index da43d8a5ca..42a9316c54 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -5,6 +5,7 @@ JSON API for the Stock app # -*- coding: utf-8 -*- from __future__ import unicode_literals +from collections import OrderedDict from datetime import datetime, timedelta from django.core.exceptions import ValidationError as DjangoValidationError @@ -463,6 +464,11 @@ class StockList(generics.ListCreateAPIView): """ user = request.user + + # Copy the request data, to side-step "mutability" issues + data = OrderedDict() + data.update(request.data) + data = request.data quantity = data.get('quantity', None) @@ -476,7 +482,7 @@ class StockList(generics.ListCreateAPIView): part = Part.objects.get(pk=data.get('part', None)) except (ValueError, Part.DoesNotExist): raise ValidationError({ - 'part': _('Valid part ID must be supplied'), + 'part': _('Valid part must be supplied'), }) # Set default location (if not provided) diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index 9369a6a881..a6e0520062 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -342,7 +342,7 @@ class StockItemTest(StockAPITestCase): } ) - self.assertContains(response, 'This field is required', status_code=status.HTTP_400_BAD_REQUEST) + self.assertContains(response, 'Valid part must be supplied', status_code=status.HTTP_400_BAD_REQUEST) # POST with an invalid part reference @@ -355,7 +355,7 @@ class StockItemTest(StockAPITestCase): } ) - self.assertContains(response, 'does not exist', status_code=status.HTTP_400_BAD_REQUEST) + self.assertContains(response, 'Valid part must be supplied', status_code=status.HTTP_400_BAD_REQUEST) # POST without quantity response = self.post(