通过key初始化
This commit is contained in:
parent
a2bfb4ec03
commit
2a8c0a2d4e
|
@ -1,5 +1,5 @@
|
|||
from apps.wf.views import CustomFieldViewSet, FromCodeListView, StateViewSet, TicketFlowViewSet, \
|
||||
TicketViewSet, TransitionViewSet, WorkflowViewSet
|
||||
TicketViewSet, TransitionViewSet, WorkflowKeyInitView, WorkflowViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
|
@ -16,4 +16,5 @@ router.register('ticketflow', TicketFlowViewSet, basename='wf_ticketflow')
|
|||
urlpatterns = [
|
||||
path(API_BASE_URL + 'participant_from_code', FromCodeListView.as_view()),
|
||||
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.utils.mixins import CreateUpdateCustomMixin, CreateUpdateModelAMixin
|
||||
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 django.db.models import Count
|
||||
from .scripts import GetParticipants
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
||||
|
||||
class FromCodeListView(APIView):
|
||||
def get(self, request, format=None):
|
||||
"""
|
||||
|
@ -32,6 +33,34 @@ class FromCodeListView(APIView):
|
|||
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):
|
||||
perms_map = {'get': '*', 'post': 'workflow:create',
|
||||
'put': 'workflow:update', 'delete': 'workflow:delete'}
|
||||
|
@ -42,9 +71,6 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|||
ordering_fields = ['create_time']
|
||||
ordering = ['-create_time']
|
||||
|
||||
def get_object(self):
|
||||
return super().get_object()
|
||||
|
||||
@action(methods=['get'], detail=True, perms_map={'get': 'workflow:update'},
|
||||
pagination_class=None, serializer_class=StateSerializer)
|
||||
def states(self, request, pk=None):
|
||||
|
@ -76,16 +102,18 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|||
workflow=wf, is_deleted=False).order_by('sort'), many=True)
|
||||
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):
|
||||
"""
|
||||
新建工单初始化
|
||||
|
||||
新建工单初始化
|
||||
"""
|
||||
ret = {}
|
||||
wf = self.get_object()
|
||||
start_state = WfService.get_workflow_start_state(wf)
|
||||
transitions = WfService.get_state_transitions(start_state)
|
||||
ret['workflow'] = pk
|
||||
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:
|
||||
|
@ -96,6 +124,7 @@ class WorkflowViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|||
ret['field_list'] = field_list
|
||||
return Response(ret)
|
||||
|
||||
|
||||
class StateViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
perms_map = {'get': '*', 'post': 'workflow:update',
|
||||
'put': 'workflow:update', 'delete': 'workflow:update'}
|
||||
|
|
Loading…
Reference in New Issue