from rest_framework.response import Response from rest_framework import serializers from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, UpdateModelMixin from apps.wf.serializers import StateSerializer, WorkflowSerializer from django.shortcuts import render from rest_framework.viewsets import GenericViewSet, ModelViewSet from rest_framework.decorators import action from apps.wf.models import Workflow, State, Transition from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin # Create your views here. class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet): perms_map = {'get': '*', 'post': 'workflow_create', 'put': 'workflow_update', 'delete': 'workflow_delete'} queryset = Workflow.objects.all() serializer_class = WorkflowSerializer search_fields = ['name', 'description'] filterset_fields = [] ordering_fields = ['create_time'] ordering = ['-create_time'] @action(methods=['get'], detail=True, perms_map={'get':'workflow_update'}, pagination_class=None, serializer_class=StateSerializer) def states(self, request, pk=None): """ 工作流下的状态节点 """ wf = self.get_object() serializer = self.serializer_class(instance=State.objects.filter(workflow=wf), many=True) return Response(serializer.data) class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, GenericViewSet): perms_map = {'*':'*'} queryset = State.objects.all() serializer_class = StateSerializer search_fields = ['name'] filterset_fields = ['workflow'] ordering = ['sort']