38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
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'] |