mirror of
https://github.com/inventree/InvenTree.git
synced 2025-08-07 12:22:11 +00:00
Use same serializer for AllStatusView
This commit is contained in:
@@ -11,13 +11,11 @@ from rest_framework.response import Response
|
|||||||
|
|
||||||
import common.models
|
import common.models
|
||||||
import common.serializers
|
import common.serializers
|
||||||
from generic.states.custom import get_status_api_response
|
|
||||||
from importer.mixins import DataExportViewMixin
|
from importer.mixins import DataExportViewMixin
|
||||||
from InvenTree.filters import SEARCH_ORDER_FILTER
|
from InvenTree.filters import SEARCH_ORDER_FILTER
|
||||||
from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI
|
from InvenTree.mixins import ListCreateAPI, RetrieveUpdateDestroyAPI
|
||||||
from InvenTree.permissions import IsStaffOrReadOnly
|
from InvenTree.permissions import IsStaffOrReadOnly
|
||||||
from InvenTree.serializers import EmptySerializer
|
from InvenTree.serializers import EmptySerializer
|
||||||
from machine.machine_type import MachineStatus
|
|
||||||
|
|
||||||
from .serializers import GenericStateClassSerializer
|
from .serializers import GenericStateClassSerializer
|
||||||
from .states import StatusCode
|
from .states import StatusCode
|
||||||
@@ -72,7 +70,7 @@ class StatusView(GenericAPIView):
|
|||||||
if not issubclass(status_class, StatusCode):
|
if not issubclass(status_class, StatusCode):
|
||||||
raise NotImplementedError('`status_class` not a valid StatusCode class')
|
raise NotImplementedError('`status_class` not a valid StatusCode class')
|
||||||
|
|
||||||
data = {'class': status_class.__name__, 'values': status_class.dict()}
|
data = {'class_name': status_class.__name__, 'values': status_class.dict()}
|
||||||
|
|
||||||
# Extend with custom values
|
# Extend with custom values
|
||||||
try:
|
try:
|
||||||
@@ -102,10 +100,29 @@ class AllStatusViews(StatusView):
|
|||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
"""Perform a GET request to learn information about status codes."""
|
"""Perform a GET request to learn information about status codes."""
|
||||||
data = get_status_api_response(StatusCode)
|
from InvenTree.helpers import inheritors
|
||||||
|
|
||||||
# Extend with MachineStatus classes
|
data = {}
|
||||||
data.update(get_status_api_response(MachineStatus, prefix=['MachineStatus']))
|
|
||||||
|
# Find all inherited status classes
|
||||||
|
status_classes = inheritors(StatusCode)
|
||||||
|
|
||||||
|
for cls in status_classes:
|
||||||
|
cls_data = {'class_name': cls.__name__, 'values': cls.dict()}
|
||||||
|
|
||||||
|
# Extend with custom values
|
||||||
|
for item in cls.custom_values():
|
||||||
|
label = str(item.name)
|
||||||
|
if label not in cls_data['values']:
|
||||||
|
cls_data['values'][label] = {
|
||||||
|
'color': item.color,
|
||||||
|
'logical_key': item.logical_key,
|
||||||
|
'key': item.key,
|
||||||
|
'label': item.label,
|
||||||
|
'name': item.name,
|
||||||
|
}
|
||||||
|
|
||||||
|
data[cls.__name__] = GenericStateClassSerializer(cls_data, many=False).data
|
||||||
|
|
||||||
return Response(data)
|
return Response(data)
|
||||||
|
|
||||||
|
@@ -30,9 +30,9 @@ class GenericStateClassSerializer(serializers.Serializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class for GenericStateClassSerializer."""
|
"""Meta class for GenericStateClassSerializer."""
|
||||||
|
|
||||||
fields = ['class', 'values']
|
fields = ['class_name', 'values']
|
||||||
|
|
||||||
class_ = serializers.CharField(label=_('Class'), read_only=True)
|
class_name = serializers.CharField(label=_('Class'), read_only=True)
|
||||||
|
|
||||||
values = serializers.DictField(
|
values = serializers.DictField(
|
||||||
child=GenericStateValueSerializer(), label=_('Values'), required=True
|
child=GenericStateValueSerializer(), label=_('Values'), required=True
|
||||||
|
Reference in New Issue
Block a user