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:
@@ -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
|
||||
|
@@ -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')
|
||||
)
|
||||
|
@@ -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')
|
||||
|
Reference in New Issue
Block a user