From 9b00ede61a11913b5e2e197a4f825216cd5778f8 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 14 Oct 2021 17:12:08 +1100 Subject: [PATCH] Add part queryset filtering to exclude particular ID values --- InvenTree/part/api.py | 21 +++++++++++++++++++++ InvenTree/templates/js/translated/bom.js | 7 +++++++ 2 files changed, 28 insertions(+) diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index dccc2f9ac1..4dd9841332 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -814,6 +814,27 @@ class PartList(generics.ListCreateAPIView): except (ValueError, Part.DoesNotExist): pass + # Exclude specific part ID values? + exclude_id = [] + + for key in ['exclude_id', 'exclude_id[]']: + if key in params: + exclude_id += params.getlist(key, []) + + if exclude_id: + + id_values = [] + + for val in exclude_id: + try: + # pk values must be integer castable + val = int(val) + id_values.append(val) + except ValueError: + pass + + queryset = queryset.exclude(pk__in=id_values) + # Exclude part variant tree? exclude_tree = params.get('exclude_tree', None) diff --git a/InvenTree/templates/js/translated/bom.js b/InvenTree/templates/js/translated/bom.js index 2cfae3a361..71cf380952 100644 --- a/InvenTree/templates/js/translated/bom.js +++ b/InvenTree/templates/js/translated/bom.js @@ -263,6 +263,12 @@ function bomSubstitutesDialog(bom_item_id, substitutes, options={}) { var subs = getSubstituteIdValues(opts.modal); + // Also exclude the "master" part (if provided) + if (options.sub_part) { + subs.push(options.sub_part); + console.log("sub_part:", options.sub_part); + } + if (subs.length > 0) { query.exclude_id = subs; } @@ -824,6 +830,7 @@ function loadBomTable(table, options) { subs, { table: table, + sub_part: row.sub_part, } ); });