From c57844cbe0a408ff14b4b9b0e080651cbf4432f7 Mon Sep 17 00:00:00 2001
From: mancini <mancini@astron.nl>
Date: Wed, 20 Jan 2021 11:32:59 +0100
Subject: [PATCH] Visualize workflow object on readonly access

---
 atdb/taskdatabase/serializers.py | 17 +++++++++++++++++
 atdb/taskdatabase/views.py       |  8 ++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index 7ac8e7f1..c945e7b4 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -30,6 +30,23 @@ class TaskSerializer(serializers.ModelSerializer):
                   'inputs','outputs','status_history')
 
 
+class TaskReadSerializer(serializers.ModelSerializer):
+    status_history = serializers.StringRelatedField(
+        many=True,
+        required=False,
+    )
+
+    workflow = WorkflowSerializer(read_only=True)
+    class Meta:
+        model = Task
+        fields = ('id','task_type','taskID',
+                  'desired_predecessor_id','predecessor','successor',
+                  'project','sas_id','priority','purge_policy','skip',
+                  'workflow',
+                  'status','desired_status',
+                  'inputs','outputs','status_history')
+
+
 class StatusSerializer(serializers.ModelSerializer):
 
     class Meta:
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 9d629398..4ad5ff4c 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -14,7 +14,7 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
 
 from .models import Task, Status, Workflow, LogEntry
 from django.db.models import Q
-from .serializers import TaskSerializer, WorkflowSerializer, LogEntrySerializer
+from .serializers import TaskSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer
 from .forms import FilterForm
 
 from .services import algorithms
@@ -133,7 +133,11 @@ class TaskListViewAPI(generics.ListCreateAPIView):
     model = Task
     queryset = Task.objects.all()
     serializer_class = TaskSerializer
-
+    def get_serializer_class(self):
+        if self.request.method in ['GET']:
+            return TaskReadSerializer
+        else:
+            return TaskSerializer
     # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html
     filter_backends = (filters.DjangoFilterBackend,)
     filter_class = TaskFilter
-- 
GitLab