2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-08-07 04:12:11 +00:00

Add serializer class definition

This commit is contained in:
Oliver Walters
2024-11-24 05:11:50 +00:00
parent 063b5f154a
commit d1e73fb6ca
2 changed files with 45 additions and 2 deletions

View File

@@ -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):

View File

@@ -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
)