工作流查询优化

This commit is contained in:
caoqianming 2023-02-20 09:07:03 +08:00
parent 6c04d161f8
commit ab880ae8ad
1 changed files with 10 additions and 3 deletions

View File

@ -189,6 +189,7 @@ class TransitionViewSet(CreateModelMixin, UpdateModelMixin, RetrieveModelMixin,
'put': 'workflow.update', 'delete': 'workflow.update'}
queryset = Transition.objects.all()
serializer_class = TransitionSerializer
select_related_fields = ['source_state', 'destination_state']
search_fields = ['name']
filterset_fields = ['workflow']
ordering = ['id']
@ -214,6 +215,7 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
queryset = Ticket.objects.all()
serializer_class = TicketSerializer
search_fields = ['title']
select_related_fields = ['workflow', 'state']
filterset_class = TicketFilterSet
ordering = ['-create_time']
@ -341,7 +343,11 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
"""
ticket = self.get_object()
steps = WfService.get_ticket_steps(ticket)
return Response(StateSerializer(instance=steps, many=True).data)
data = StateSerializer(instance=steps, many=True).data
for i in data:
if i['id'] == ticket.state.id:
i['checked'] = True
return Response(data)
@action(methods=['get'], detail=True, perms_map={'get': '*'})
def flowlogs(self, request, pk=None):
@ -350,7 +356,7 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
"""
ticket = self.get_object()
flowlogs = TicketFlow.objects.filter(ticket=ticket).order_by('-create_time')
serializer = TicketFlowSerializer(instance=flowlogs, many=True)
serializer = TicketFlowSerializer(instance=flowlogs.select_related('participant', 'state', 'transition'), many=True)
return Response(serializer.data)
@action(methods=['get'], detail=True, perms_map={'get': '*'})
@ -360,7 +366,7 @@ class TicketViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, R
"""
ticket = self.get_object()
transitions = WfService.get_ticket_transitions(ticket)
return Response(TransitionSerializer(instance=transitions, many=True).data)
return Response(TransitionSerializer(instance=transitions.select_related('source_state', 'destination_state'), many=True).data)
@action(methods=['post'], detail=True, perms_map={'post': '*'})
def accpet(self, request, pk=None):
@ -521,5 +527,6 @@ class TicketFlowViewSet(ListModelMixin, RetrieveModelMixin, CustomGenericViewSet
queryset = TicketFlow.objects.all()
serializer_class = TicketFlowSerializer
search_fields = ['suggestion']
select_related_fields = ['participant', 'state', 'transition']
filterset_fields = ['ticket']
ordering = ['-create_time']