From ab6ff76fe930a60c56cba2813660d4718050039f Mon Sep 17 00:00:00 2001
From: Nico Vermaas <vermaas@astron.nl>
Date: Tue, 2 Feb 2021 07:09:44 +0100
Subject: [PATCH] get rid of new_workflow_uri and new_workflow_id in models.py

---
 atdb/taskdatabase/serializers.py              | 30 ++++++++++++++++++-
 .../templates/taskdatabase/index.html         |  2 +-
 atdb/taskdatabase/views.py                    | 16 ++++++++--
 3 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index 9db22fd5..47e8a14a 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -24,7 +24,7 @@ class LogEntrySerializer(serializers.ModelSerializer):
         fields = "__all__"
 
 
-class TaskSerializer(serializers.ModelSerializer):
+class TaskWriteSerializer(serializers.ModelSerializer):
 
     status_history = serializers.StringRelatedField(
         many=True,
@@ -79,6 +79,34 @@ class TaskSerializer(serializers.ModelSerializer):
             task.save()
             return task
 
+class TaskReadSerializer(serializers.ModelSerializer):
+
+    status_history = serializers.StringRelatedField(
+        many=True,
+        required=False,
+    )
+
+    log_entries = serializers.StringRelatedField(
+        many=True,
+        required=False
+    )
+
+    successors = serializers.StringRelatedField(
+        many=True,
+        required=False,
+    )
+
+    class Meta:
+        model = Task
+        fields = ('id','task_type','filter','predecessor','successors',
+                  'project','sas_id','priority','purge_policy','resume',
+                  'workflow',
+                  'stage_request_id',
+                  'status','new_status',
+                  'inputs','outputs','metrics','status_history',
+                  'log_entries'
+                  )
+
 
 class StatusSerializer(serializers.ModelSerializer):
 
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index bc40666a..7be4eb6e 100644
--- a/atdb/taskdatabase/templates/taskdatabase/index.html
+++ b/atdb/taskdatabase/templates/taskdatabase/index.html
@@ -44,7 +44,7 @@
     </div>
     {% include 'taskdatabase/pagination.html' %}
 </div>
-    <p class="footer"> Version 1.0.0 (1 feb 2021 - 17:00)
+    <p class="footer"> Version 1.0.0 (2 feb 2021 - 7:00)
     <script type="text/javascript">
         (function(seconds) {
             var refresh,
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index 60948650..c913519a 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 TaskWriteSerializer, TaskReadSerializer, WorkflowSerializer, LogEntrySerializer
 from .forms import FilterForm
 
 from .services import algorithms
@@ -132,12 +132,17 @@ class TaskListViewAPI(generics.ListCreateAPIView):
     """
     model = Task
     queryset = Task.objects.all()
-    serializer_class = TaskSerializer
+    #serializer_class = TaskSerializer
 
     # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html
     filter_backends = (filters.DjangoFilterBackend,)
     filter_class = TaskFilter
 
+    def get_serializer_class(self):
+        if self.request.method in ['GET']:
+            return TaskReadSerializer
+        else:
+            return TaskWriteSerializer
 
 # example: /atdb/tasks/5/
 # calling this view serializes a task in the REST API
@@ -147,8 +152,13 @@ class TaskDetailsViewAPI(generics.RetrieveUpdateDestroyAPIView):
     """
     model = Task
     queryset = Task.objects.all()
-    serializer_class = TaskSerializer
+    # serializer_class = TaskSerializer
 
+    def get_serializer_class(self):
+        if self.request.method in ['GET']:
+            return TaskReadSerializer
+        else:
+            return TaskWriteSerializer
 
 # example: /atdb/workflows/
 class WorkflowListViewAPI(generics.ListCreateAPIView):
-- 
GitLab