From 4a45ba3a44e6c31042200a282c5ca82df1a4681d Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 27 Jan 2022 13:37:42 +1100 Subject: [PATCH] Fix data mutability issues --- InvenTree/stock/api.py | 8 +++++++- InvenTree/stock/test_api.py | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) 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(