From b0be84f3a628a3169e5f822c08d74a3e77eec995 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Sun, 12 Oct 2025 21:23:37 +0200 Subject: [PATCH] adjust default filtering --- .../InvenTree/InvenTree/serializers.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/serializers.py b/src/backend/InvenTree/InvenTree/serializers.py index e8265dc2ad..f31504a508 100644 --- a/src/backend/InvenTree/InvenTree/serializers.py +++ b/src/backend/InvenTree/InvenTree/serializers.py @@ -68,18 +68,27 @@ class PathScopedMixin(serializers.Serializer): # Actually gather the filterable fields fields = self.fields.items() - flt_fld = {k: a for k, a in fields if getattr(a, 'is_filterable', None)} - self.filter_targets = {k: kwargs.pop(k, False) for k in flt_fld} + self.filter_targets = { + k: {'serializer': a, 'default': a.is_filterable_default} + for k, a in fields + if getattr(a, 'is_filterable', None) + } + self.filter_target_values = { + k: kwargs.pop(k, None) for k in self.filter_targets + } return kwargs def do_filtering(self, *args, **kwargs): """Do the actual filtering.""" - if InvenTree.ready.isGeneratingSchema() or not hasattr(self, 'filter_targets'): + if InvenTree.ready.isGeneratingSchema() or not hasattr( + self, 'filter_target_values' + ): return # Throw out fields which are not requested - for k, v in self.filter_targets.items(): - if v is not True: + for k, v in self.filter_target_values.items(): + value = v if v is not None else self.filter_targets[k]['default'] + if value is not True: self.fields.pop(k, None)