diff --git a/apps/wf/views.py b/apps/wf/views.py index 98dcb244..bc88bca5 100755 --- a/apps/wf/views.py +++ b/apps/wf/views.py @@ -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']