1
0
forked from erp-dev/erp

feat: stateflow v2 (params required)

This commit is contained in:
2025-11-15 19:39:15 +08:00
parent 9ad404a365
commit 9c38e2ac09
24 changed files with 3670 additions and 547 deletions

View File

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