From 9a9ed5f192df804878a90daae745b5ba352af379 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 22 Apr 2022 00:36:30 +1000 Subject: [PATCH] Fix validation of duplicate IPN - Duplicate IPN check does not apply if an empty IPN value is set - Note that "if x" is a more pythonic test than "if x not in [None, '']" --- InvenTree/part/models.py | 7 ++++++- InvenTree/stock/models.py | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index b7269f3e5e..35872c09ba 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -777,7 +777,8 @@ class Part(MPTTModel): # User can decide whether duplicate IPN (Internal Part Number) values are allowed allow_duplicate_ipn = common.models.InvenTreeSetting.get_setting('PART_ALLOW_DUPLICATE_IPN') - if self.IPN is not None and not allow_duplicate_ipn: + # Raise an error if an IPN is set, and it is a duplicate + if self.IPN and not allow_duplicate_ipn: parts = Part.objects.filter(IPN__iexact=self.IPN) parts = parts.exclude(pk=self.pk) @@ -798,6 +799,10 @@ class Part(MPTTModel): super().clean() + # Strip IPN field + if self.IPN: + self.IPN = self.IPN.strip() + if self.trackable: for part in self.get_used_in().all(): diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 43593d3283..12131b5b58 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -453,10 +453,12 @@ class StockItem(MPTTModel): super().clean() - if self.serial is not None and type(self.serial) is str: + # Strip serial number field + if self.serial: self.serial = self.serial.strip() - if self.batch is not None and type(self.batch) is str: + # Strip batch code field + if self.batch: self.batch = self.batch.strip() try: