2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-10-23 09:27:39 +00:00

[API] Bug fix for FilterableSerializerMixin (#10632)

- Handle case where data is being exported
This commit is contained in:
Oliver
2025-10-20 17:14:47 +11:00
committed by GitHub
parent f9ce9e20b2
commit 27f7b6ed55
2 changed files with 31 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ from rest_framework import generics, mixins, status
from rest_framework.response import Response
import data_exporter.mixins
import data_exporter.serializers
import importer.mixins
from InvenTree.fields import InvenTreeNotesField, OutputConfiguration
from InvenTree.helpers import (
@@ -231,7 +232,12 @@ class OutputOptionsMixin:
serializer = super().get_serializer(*args, **kwargs)
# Check if the serializer actually can be filtered - makes not much sense to use this mixin without that prerequisite
if not isinstance(serializer, FilterableSerializerMixin):
if isinstance(
serializer, data_exporter.serializers.DataExportOptionsSerializer
):
# Skip in this instance, special case for determining export options
pass
elif not isinstance(serializer, FilterableSerializerMixin):
raise Exception(
'INVE-I2: `OutputOptionsMixin` can only be used with serializers that contain the `FilterableSerializerMixin` mixin'
)

View File

@@ -3339,3 +3339,27 @@ class PartTestTemplateTest(PartAPITestBase):
response = self.patch(url, {'choices': 'a,b,c,d,e,f,f'}, expected_code=400)
self.assertIn('Choices must be unique', str(response.data['choices']))
class PartParameterTests(PartAPITestBase):
"""Unit test for PartParameter API endpoints."""
def test_export_data(self):
"""Test data export functionality for PartParameter objects."""
url = reverse('api-part-parameter-list')
response = self.options(
url,
data={
'export': True,
'export_plugin': 'inventree-exporter',
'part_detail': True,
'template_detail': True,
},
expected_code=200,
)
fields = response.data['actions']['GET'].keys()
self.assertIn('export_format', fields)
self.assertIn('export_plugin', fields)