diff --git a/src/backend/InvenTree/InvenTree/api.py b/src/backend/InvenTree/InvenTree/api.py index 7213f78cbd8..0ebbfad8a13 100644 --- a/src/backend/InvenTree/InvenTree/api.py +++ b/src/backend/InvenTree/InvenTree/api.py @@ -379,11 +379,26 @@ def delete(self, request, *args, **kwargs): # Filter by provided item ID values if items: - queryset = queryset.filter(id__in=items) + try: + queryset = queryset.filter(id__in=items) + except Exception: + raise ValidationError({ + 'non_field_errors': _('Invalid items list provided') + }) # Filter by provided filters if filters: - queryset = queryset.filter(**filters) + try: + queryset = queryset.filter(**filters) + except Exception: + raise ValidationError({ + 'non_field_errors': _('Invalid filters provided') + }) + + if queryset.count() == 0: + raise ValidationError({ + 'non_field_errors': _('No items found to delete') + }) # Run a final validation step (should raise an error if the deletion should not proceed) self.validate_delete(queryset, request) diff --git a/src/backend/InvenTree/stock/test_api.py b/src/backend/InvenTree/stock/test_api.py index 3b6971730df..f8050840333 100644 --- a/src/backend/InvenTree/stock/test_api.py +++ b/src/backend/InvenTree/stock/test_api.py @@ -1874,7 +1874,7 @@ def test_bulk_delete(self): # Now, let's delete all the newly created items with a single API request # However, we will provide incorrect filters response = self.delete( - url, {'items': tests, 'filters': {'stock_item': 10}}, expected_code=204 + url, {'items': tests, 'filters': {'stock_item': 10}}, expected_code=400 ) self.assertEqual(StockItemTestResult.objects.count(), n + 50)