From ecfde468383ec336fcfd434ff3a9622290e0c195 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 25 May 2019 21:57:59 +1000 Subject: [PATCH] Fix error in BomItem creation --- InvenTree/part/models.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 8383431caa..385bae7bf4 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -858,13 +858,19 @@ class BomItem(models.Model): """ # A part cannot refer to itself in its BOM - if self.part == self.sub_part: - raise ValidationError({'sub_part': _('Part cannot be added to its own Bill of Materials')}) - - # Test for simple recursion - for item in self.sub_part.bom_items.all(): - if self.part == item.sub_part: - raise ValidationError({'sub_part': _("Part '{p1}' is used in BOM for '{p2}' (recursive)".format(p1=str(self.part), p2=str(self.sub_part)))}) + try: + if self.sub_part is not None and self.part is not None: + if self.part == self.sub_part: + raise ValidationError({'sub_part': _('Part cannot be added to its own Bill of Materials')}) + + # Test for simple recursion + for item in self.sub_part.bom_items.all(): + if self.part == item.sub_part: + raise ValidationError({'sub_part': _("Part '{p1}' is used in BOM for '{p2}' (recursive)".format(p1=str(self.part), p2=str(self.sub_part)))}) + + except Part.DoesNotExist: + # A blank Part will be caught elsewhere + pass class Meta: verbose_name = "BOM Item"