diff --git a/src/backend/InvenTree/generic/states/api.py b/src/backend/InvenTree/generic/states/api.py index c52be2ffb3..5f5b4a7027 100644 --- a/src/backend/InvenTree/generic/states/api.py +++ b/src/backend/InvenTree/generic/states/api.py @@ -19,6 +19,7 @@ from InvenTree.permissions import IsStaffOrReadOnly from InvenTree.serializers import EmptySerializer from machine.machine_type import MachineStatus +from .serializers import GenericStateClassSerializer from .states import StatusCode @@ -38,6 +39,7 @@ class StatusView(GenericAPIView): """ permission_classes = [permissions.IsAuthenticated] + serializer_class = GenericStateClassSerializer # Override status_class for implementing subclass MODEL_REF = 'statusmodel' @@ -56,7 +58,7 @@ class StatusView(GenericAPIView): @extend_schema( description='Retrieve information about a specific status code', responses={ - 200: OpenApiResponse(description='Status code information'), + 200: GenericStateClassSerializer, 400: OpenApiResponse(description='Invalid request'), }, ) @@ -87,7 +89,9 @@ class StatusView(GenericAPIView): except Exception: pass - return Response(data) + serializer = GenericStateClassSerializer(data, many=False) + + return Response(serializer.data) class AllStatusViews(StatusView): diff --git a/src/backend/InvenTree/generic/states/serializers.py b/src/backend/InvenTree/generic/states/serializers.py new file mode 100644 index 0000000000..5d16073920 --- /dev/null +++ b/src/backend/InvenTree/generic/states/serializers.py @@ -0,0 +1,39 @@ +"""Serializer classes for handling generic state information.""" + +from django.utils.translation import gettext_lazy as _ + +from rest_framework import serializers + + +class GenericStateValueSerializer(serializers.Serializer): + """API serializer for generic state information.""" + + class Meta: + """Meta class for GenericStateValueSerializer.""" + + fields = ['key', 'logical_key', 'name', 'label', 'color'] + + key = serializers.IntegerField(label=_('Key'), required=True) + + logical_key = serializers.CharField(label=_('Logical Key'), required=False) + + name = serializers.CharField(label=_('Name'), required=True) + + label = serializers.CharField(label=_('Label'), required=True) + + color = serializers.CharField(label=_('Color'), required=False) + + +class GenericStateClassSerializer(serializers.Serializer): + """API serializer for generic state class information.""" + + class Meta: + """Meta class for GenericStateClassSerializer.""" + + fields = ['class', 'values'] + + class_ = serializers.CharField(label=_('Class'), read_only=True) + + values = serializers.DictField( + child=GenericStateValueSerializer(), label=_('Values'), required=True + )