2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-06 12:01:41 +00:00

Fix 'issued_by' filter on BuildOrder API (#10135)

* Fix 'issued_by' filter on BuildOrder API

* Update API version

* Add unit test
This commit is contained in:
Oliver
2025-08-06 14:10:02 +10:00
committed by GitHub
parent 236384fee2
commit fcc913e024
3 changed files with 22 additions and 17 deletions

View File

@@ -1,12 +1,15 @@
"""InvenTree API version information."""
# InvenTree API version
INVENTREE_API_VERSION = 379
INVENTREE_API_VERSION = 380
"""Increment this API version number whenever there is a significant change to the API that any clients need to know about."""
INVENTREE_API_TEXT = """
v380 -> 2025-08-06 : https://github.com/inventree/InvenTree/pull/10135
- Fixes "issued_by" filter for the BuildOrder list API endpoint
v379 -> 2025-08-04 : https://github.com/inventree/InvenTree/pull/10124
- Removes "PartStocktakeReport" model and associated API endpoints
- Remove "last_stocktake" field from the Part model

View File

@@ -36,7 +36,7 @@ class BuildFilter(rest_filters.FilterSet):
"""Metaclass options."""
model = Build
fields = ['sales_order', 'external']
fields = ['issued_by', 'sales_order', 'external']
status = rest_filters.NumberFilter(label=_('Order Status'), method='filter_status')
@@ -150,21 +150,6 @@ class BuildFilter(rest_filters.FilterSet):
return queryset.filter(responsible__in=owners)
return queryset.exclude(responsible__in=owners)
issued_by = rest_filters.ModelChoiceFilter(
queryset=Owner.objects.all(), label=_('Issued By'), method='filter_issued_by'
)
def filter_issued_by(self, queryset, name, owner):
"""Filter by 'owner' which issued the order."""
if owner.label() == 'user':
user = User.objects.get(pk=owner.owner_id)
return queryset.filter(issued_by=user)
elif owner.label() == 'group':
group = User.objects.filter(groups__pk=owner.owner_id)
return queryset.filter(issued_by__in=group)
else:
return queryset.none()
assigned_to = rest_filters.ModelChoiceFilter(
queryset=Owner.objects.all(), field_name='responsible', label=_('Assigned To')
)

View File

@@ -65,6 +65,23 @@ class TestBuildAPI(InvenTreeAPITestCase):
response = self.get(url, {'reference': 'BO-9999XX'}, expected_code=200)
self.assertEqual(len(response.data), 0)
# Filter by 'issued_by'
response = self.get(url)
build = Build.objects.first()
build.issued_by = self.user
build.save()
response = self.get(url, {'issued_by': self.user.pk}, expected_code=200)
self.assertEqual(len(response.data), 1)
item = response.data[0]
self.assertEqual(item['pk'], build.pk)
self.assertEqual(item['issued_by'], self.user.pk)
def test_get_build_item_list(self):
"""Test that we can retrieve list of BuildItem objects."""
url = reverse('api-build-item-list')