mirror of
https://github.com/inventree/InvenTree.git
synced 2025-06-20 22:06:28 +00:00
Cleanup get_required_parts function
This commit is contained in:
@ -931,13 +931,26 @@ class Part(MPTTModel):
|
||||
|
||||
self.bom_items.all().delete()
|
||||
|
||||
def required_parts(self):
|
||||
""" Return a list of parts required to make this part (list of BOM items) """
|
||||
parts = []
|
||||
def getRequiredParts(self, recursive=False, parts=set()):
|
||||
"""
|
||||
Return a list of parts required to make this part (i.e. BOM items).
|
||||
|
||||
Args:
|
||||
recursive: If True iterate down through sub-assemblies
|
||||
parts: Set of parts already found (to prevent recursion issues)
|
||||
"""
|
||||
|
||||
for bom_item in self.bom_items.all().select_related('sub_part'):
|
||||
|
||||
sub_part = bom_item.sub_part
|
||||
|
||||
if sub_part not in parts:
|
||||
|
||||
parts.add(sub_part)
|
||||
|
||||
if recursive:
|
||||
sub_part.getRequiredParts(recursive=True, parts=parts)
|
||||
|
||||
for bom in self.bom_items.all().select_related('sub_part'):
|
||||
parts.append(bom.sub_part)
|
||||
|
||||
return parts
|
||||
|
||||
def get_allowed_bom_items(self):
|
||||
|
@ -2127,7 +2127,7 @@ class BomItemCreate(AjaxCreateView):
|
||||
query = query.filter(active=True)
|
||||
|
||||
# Eliminate any options that are already in the BOM!
|
||||
query = query.exclude(id__in=[item.id for item in part.required_parts()])
|
||||
query = query.exclude(id__in=[item.id for item in part.getRequiredParts()])
|
||||
|
||||
form.fields['sub_part'].queryset = query
|
||||
|
||||
@ -2195,7 +2195,7 @@ class BomItemEdit(AjaxUpdateView):
|
||||
except ValueError:
|
||||
sub_part_id = -1
|
||||
|
||||
existing = [item.pk for item in part.required_parts()]
|
||||
existing = [item.pk for item in part.getRequiredParts()]
|
||||
|
||||
if sub_part_id in existing:
|
||||
existing.remove(sub_part_id)
|
||||
|
Reference in New Issue
Block a user