From 48dd3d37c450050b5b576b4bd54d9b59eff1ead6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 17 Oct 2024 19:45:07 +1100 Subject: [PATCH] Bug fix: Manually create serialized stock (#8306) * Bug fix: Manually create serialized stock - fixes bug which extraced location as a string, rather than the model instance * Fix for StockList.create --- src/backend/InvenTree/stock/api.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend/InvenTree/stock/api.py b/src/backend/InvenTree/stock/api.py index ed51cdc537..47e8031767 100644 --- a/src/backend/InvenTree/stock/api.py +++ b/src/backend/InvenTree/stock/api.py @@ -922,7 +922,6 @@ class StockList(DataExportViewMixin, ListCreateDestroyAPIView): data.update(self.clean_data(request.data)) quantity = data.get('quantity', None) - location = data.get('location', None) if quantity is None: raise ValidationError({'quantity': _('Quantity is required')}) @@ -932,12 +931,10 @@ class StockList(DataExportViewMixin, ListCreateDestroyAPIView): except (ValueError, Part.DoesNotExist): raise ValidationError({'part': _('Valid part must be supplied')}) - # Set default location (if not provided) - if 'location' not in data: - location = part.get_default_location() - - if location: - data['location'] = location.pk + location = data.get('location', None) + # Override location if not specified + if location is None and part.default_location: + data['location'] = part.default_location.pk expiry_date = data.get('expiry_date', None) @@ -1037,6 +1034,9 @@ class StockList(DataExportViewMixin, ListCreateDestroyAPIView): serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) + # Extract location information + location = serializer.validated_data.get('location', None) + with transaction.atomic(): if serials: # Create multiple serialized StockItem objects