diff --git a/SAS/TMSS/src/tmss/urls.py b/SAS/TMSS/src/tmss/urls.py index a680cf607e0fce14b748a0f40a2c7bd555bb4f72..6a88477b9342169152faa03342f895d2f525d024 100644 --- a/SAS/TMSS/src/tmss/urls.py +++ b/SAS/TMSS/src/tmss/urls.py @@ -243,6 +243,7 @@ if os.environ.get('TMSS_ENABLE_VIEWFLOW', "False").lower() == "true": viewflow_router.register('scheduling_unit_flow/qa_scheduling_unit_task', workflow_viewsets.SchedulingUnitTaskViewSet, basename='qa_scheduling_unit_task') viewflow_router.register(r'scheduling_unit_flow/qa_scheduling_unit_task/(?P<qa_scheduling_unit_task_id>\d+)/assign', workflow_viewsets.SchedulingUnitTaskAssignViewSet) viewflow_router.register(r'scheduling_unit_flow/qa_scheduling_unit_task/(?P<qa_scheduling_unit_task_id>\d+)/unassign', workflow_viewsets.SchedulingUnitTaskUnassignViewSet) + viewflow_router.register(r'scheduling_unit_flow/qa_scheduling_unit_process/(?P<qa_scheduling_unit_process_id>\d+)/current_task', workflow_viewsets.SchedulingUnitGetActiveTasksViewSet) viewflow_urlpatterns.extend(viewflow_router.urls) diff --git a/SAS/TMSS/src/tmss/workflowapp/serializers/schedulingunitflow.py b/SAS/TMSS/src/tmss/workflowapp/serializers/schedulingunitflow.py index da1f129d0a4f3118b46db47e5a2291e4c47e8850..193197c438e1b6e3d16592ec3448bc7679b76239 100644 --- a/SAS/TMSS/src/tmss/workflowapp/serializers/schedulingunitflow.py +++ b/SAS/TMSS/src/tmss/workflowapp/serializers/schedulingunitflow.py @@ -49,4 +49,10 @@ class SchedulingUnitAssignTaskSerializer(ModelSerializer): class SchedulingUnitUnassignTaskSerializer(ModelSerializer): class Meta: model = Task - fields = ['id'] \ No newline at end of file + fields = ['id'] + +class SchedulingUnitGetActiveTasksSerializer(ModelSerializer): + class Meta: + model = models.SchedulingUnitProcess + fields = ['id'] + \ No newline at end of file diff --git a/SAS/TMSS/src/tmss/workflowapp/viewsets/schedulingunitflow.py b/SAS/TMSS/src/tmss/workflowapp/viewsets/schedulingunitflow.py index 9ff8653485d5951232ec8bb97d495741f6c23179..04cf4562edd1477a1ff4539756aefe563146a28a 100644 --- a/SAS/TMSS/src/tmss/workflowapp/viewsets/schedulingunitflow.py +++ b/SAS/TMSS/src/tmss/workflowapp/viewsets/schedulingunitflow.py @@ -17,8 +17,11 @@ from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from drf_yasg.inspectors import SwaggerAutoSchema from drf_yasg.openapi import Parameter +from django.core.serializers import serialize +from django.http import HttpResponse -from .. import forms, models, serializers + +from .. import forms, models, serializers, flows import logging logger = logging.getLogger(__name__) @@ -169,5 +172,28 @@ class SchedulingUnitTaskUnassignViewSet(mixins.CreateModelMixin, content = {'Unassign': 'No Scheduling Unit Task with the specified id'} return Response(content, status=status.HTTP_422_UNPROCESSABLE_ENTITY) + +class SchedulingUnitGetActiveTasksViewSet(mixins.CreateModelMixin, + #mixins.ListModelMixin, + #mixins.RetrieveModelMixin, + viewsets.GenericViewSet): + + queryset = models.SchedulingUnitProcess.objects.all() + serializer_class = serializers.SchedulingUnitGetActiveTasksSerializer + + @swagger_auto_schema(responses={200: 'List of non finished tasks.', + 403: 'forbidden', + 422: 'error'}, + operation_description="Get the list of active tasks.") + def create(self, request, *args, **kwargs): + if 'qa_scheduling_unit_process_id' in kwargs: + try: + print(models.SchedulingUnitProcess.objects.filter(id=self.kwargs['qa_scheduling_unit_process_id'])[0].active_tasks()) + data = serialize('json', models.SchedulingUnitProcess.objects.filter(id=self.kwargs['qa_scheduling_unit_process_id'])[0].active_tasks()) + return HttpResponse(data, content_type='application/json') + except IndexError: + content = {'Get Active Task(s)': 'No Process with the specified id'} + return Response(content, status=status.HTTP_422_UNPROCESSABLE_ENTITY) + \ No newline at end of file