通过key初始化
This commit is contained in:
parent
a2bfb4ec03
commit
2a8c0a2d4e
|
@ -1,5 +1,5 @@
|
||||||
from apps.wf.views import CustomFieldViewSet, FromCodeListView, StateViewSet, TicketFlowViewSet, \
|
from apps.wf.views import CustomFieldViewSet, FromCodeListView, StateViewSet, TicketFlowViewSet, \
|
||||||
TicketViewSet, TransitionViewSet, WorkflowViewSet
|
TicketViewSet, TransitionViewSet, WorkflowKeyInitView, WorkflowViewSet
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
|
@ -16,4 +16,5 @@ router.register('ticketflow', TicketFlowViewSet, basename='wf_ticketflow')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL + 'participant_from_code', FromCodeListView.as_view()),
|
path(API_BASE_URL + 'participant_from_code', FromCodeListView.as_view()),
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
|
path(API_BASE_URL + 'workflow/<str:key>/init_key/', WorkflowKeyInitView.as_view())
|
||||||
]
|
]
|
||||||
|
|
|
@ -17,13 +17,14 @@ from rest_framework.decorators import action
|
||||||
from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow
|
from apps.wf.models import CustomField, Ticket, Workflow, State, Transition, TicketFlow
|
||||||
from apps.utils.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin
|
from apps.utils.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin
|
||||||
from apps.wf.services import WfService
|
from apps.wf.services import WfService
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError, NotFound
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from .scripts import GetParticipants
|
from .scripts import GetParticipants
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
class FromCodeListView(APIView):
|
class FromCodeListView(APIView):
|
||||||
def get(self, request, format=None):
|
def get(self, request, format=None):
|
||||||
"""
|
"""
|
||||||
|
@ -32,6 +33,34 @@ class FromCodeListView(APIView):
|
||||||
return Response(GetParticipants.all_funcs)
|
return Response(GetParticipants.all_funcs)
|
||||||
|
|
||||||
|
|
||||||
|
class WorkflowKeyInitView(APIView):
|
||||||
|
perms_map = {'get': '*'}
|
||||||
|
|
||||||
|
def get(self, request, key=None):
|
||||||
|
"""
|
||||||
|
新建工单初始化-通过key
|
||||||
|
|
||||||
|
新建工单初始化
|
||||||
|
"""
|
||||||
|
ret = {}
|
||||||
|
try:
|
||||||
|
wf = Workflow.objects.get(key=key)
|
||||||
|
except Exception:
|
||||||
|
raise NotFound('获取工作流失败')
|
||||||
|
start_state = WfService.get_workflow_start_state(wf)
|
||||||
|
transitions = WfService.get_state_transitions(start_state)
|
||||||
|
ret['workflow'] = wf.id
|
||||||
|
ret['transitions'] = TransitionSerializer(instance=transitions, many=True).data
|
||||||
|
field_list = CustomFieldSerializer(instance=WfService.get_workflow_custom_fields(wf), many=True).data
|
||||||
|
for i in field_list:
|
||||||
|
if i['field_key'] in start_state.state_fields:
|
||||||
|
i['field_attribute'] = start_state.state_fields[i['field_key']]
|
||||||
|
else:
|
||||||
|
i['field_attribute'] = State.STATE_FIELD_READONLY
|
||||||
|
ret['field_list'] = field_list
|
||||||
|
return Response(ret)
|
||||||
|
|
||||||
|
|
||||||
class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'workflow:create',
|
perms_map = {'get': '*', 'post': 'workflow:create',
|
||||||
'put': 'workflow:update', 'delete': 'workflow:delete'}
|
'put': 'workflow:update', 'delete': 'workflow:delete'}
|
||||||
|
@ -42,9 +71,6 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
ordering_fields = ['create_time']
|
ordering_fields = ['create_time']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
def get_object(self):
|
|
||||||
return super().get_object()
|
|
||||||
|
|
||||||
@action(methods=['get'], detail=True, perms_map={'get': 'workflow:update'},
|
@action(methods=['get'], detail=True, perms_map={'get': 'workflow:update'},
|
||||||
pagination_class=None, serializer_class=StateSerializer)
|
pagination_class=None, serializer_class=StateSerializer)
|
||||||
def states(self, request, pk=None):
|
def states(self, request, pk=None):
|
||||||
|
@ -76,16 +102,18 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
workflow=wf, is_deleted=False).order_by('sort'), many=True)
|
workflow=wf, is_deleted=False).order_by('sort'), many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@action(methods=['get'], detail=True, perms_map={'get': 'workflow:init'})
|
@action(methods=['get'], detail=True, perms_map={'get': '*'})
|
||||||
def init(self, request, pk=None):
|
def init(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
|
新建工单初始化
|
||||||
|
|
||||||
新建工单初始化
|
新建工单初始化
|
||||||
"""
|
"""
|
||||||
ret = {}
|
ret = {}
|
||||||
wf = self.get_object()
|
wf = self.get_object()
|
||||||
start_state = WfService.get_workflow_start_state(wf)
|
start_state = WfService.get_workflow_start_state(wf)
|
||||||
transitions = WfService.get_state_transitions(start_state)
|
transitions = WfService.get_state_transitions(start_state)
|
||||||
ret['workflow'] = pk
|
ret['workflow'] = wf.id
|
||||||
ret['transitions'] = TransitionSerializer(instance=transitions, many=True).data
|
ret['transitions'] = TransitionSerializer(instance=transitions, many=True).data
|
||||||
field_list = CustomFieldSerializer(instance=WfService.get_workflow_custom_fields(wf), many=True).data
|
field_list = CustomFieldSerializer(instance=WfService.get_workflow_custom_fields(wf), many=True).data
|
||||||
for i in field_list:
|
for i in field_list:
|
||||||
|
@ -96,6 +124,7 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
ret['field_list'] = field_list
|
ret['field_list'] = field_list
|
||||||
return Response(ret)
|
return Response(ret)
|
||||||
|
|
||||||
|
|
||||||
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
perms_map = {'get': '*', 'post': 'workflow:update',
|
perms_map = {'get': '*', 'post': 'workflow:update',
|
||||||
'put': 'workflow:update', 'delete': 'workflow:update'}
|
'put': 'workflow:update', 'delete': 'workflow:update'}
|
||||||
|
|
Loading…
Reference in New Issue