forked from erp-dev/erp
feat: stateflow v2 (params required)
This commit is contained in:
@@ -2,13 +2,16 @@
|
||||
State API ViewSet
|
||||
"""
|
||||
from rest_framework import viewsets, filters
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.pagination import LimitOffsetPagination
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from stateflow import models
|
||||
from stateflow import models, services
|
||||
from stateflow.serializers import (
|
||||
StateListSerializer,
|
||||
StateDetailSerializer,
|
||||
StateCreateUpdateSerializer,
|
||||
StateParameterSerializer,
|
||||
)
|
||||
|
||||
|
||||
@@ -51,3 +54,23 @@ class StateViewSet(viewsets.ModelViewSet):
|
||||
if self.action == 'retrieve':
|
||||
queryset = queryset.prefetch_related('parameters')
|
||||
return queryset
|
||||
|
||||
@action(detail=True, methods=['get'])
|
||||
def parameters(self, request, pk=None):
|
||||
"""
|
||||
获取状态的参数列表
|
||||
|
||||
查询参数:
|
||||
- required_only: 是否只返回必填参数,默认 false (可选值: true, false)
|
||||
"""
|
||||
state = self.get_object()
|
||||
required_only = request.query_params.get('required_only', 'false').lower() == 'true'
|
||||
|
||||
parameters = services.get_state_parameters(state, required_only=required_only)
|
||||
|
||||
return Response({
|
||||
'state_id': state.id,
|
||||
'state_name': state.name,
|
||||
'parameters': StateParameterSerializer(parameters, many=True).data,
|
||||
'count': len(parameters)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user