From 332e4fe1801ae9cd837b9a6945bc49cd16754d79 Mon Sep 17 00:00:00 2001
From: Nico Vermaas <vermaas@astron.nl>
Date: Mon, 1 Feb 2021 17:06:47 +0100
Subject: [PATCH] get rid of new_workflow_uri and new_workflow_id in models.py

---
 atdb/taskdatabase/models.py                   |  2 --
 atdb/taskdatabase/serializers.py              | 27 +++++++++++++++++++
 atdb/taskdatabase/services/signals.py         |  2 +-
 .../templates/taskdatabase/index.html         |  2 +-
 4 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py
index 4251f655..ad672958 100644
--- a/atdb/taskdatabase/models.py
+++ b/atdb/taskdatabase/models.py
@@ -24,8 +24,6 @@ class Task(models.Model):
     new_status = models.CharField(max_length=50, default="defining", null=True)
     status = models.CharField(db_index=True, default="unknown", max_length=50,blank=True, null=True)
 
-    new_workflow_id = models.CharField(max_length=15, blank=True, null=True)
-    new_workflow_uri = models.CharField(max_length=100, blank=True, null=True)
     resume = models.BooleanField(default=True)
     creationTime = models.DateTimeField(default=datetime.utcnow, blank=True)
 
diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index a1fc74d1..9db22fd5 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -41,6 +41,9 @@ class TaskSerializer(serializers.ModelSerializer):
         required=False,
     )
 
+    new_workflow_id = serializers.SerializerMethodField()  # no corresponding model property.
+    new_workflow_uri = serializers.SerializerMethodField()  # no corresponding model property.
+
     class Meta:
         model = Task
         fields = ('id','task_type','filter','predecessor','successors',
@@ -52,6 +55,30 @@ class TaskSerializer(serializers.ModelSerializer):
                   'log_entries'
                   )
 
+    def get_new_workflow_id(self, instance):
+        return instance.workflow.id
+
+    def get_new_workflow_uri(self, instance):
+        return instance.workflow.workflow_uri
+
+    def create(self, validated_data):
+        task = Task.objects.create(**validated_data)
+
+        workflow_uri = self.initial_data['new_workflow_uri']
+        if workflow_uri:
+            #workflow_uri = validated_data['new_workflow_uri']
+            workflow = Workflow.objects.get(workflow_uri=workflow_uri)
+            task.workflow = workflow
+            task.save()
+            return task
+
+        workflow_id = self.initial_data['new_workflow_id']
+        if workflow_id:
+            workflow = Workflow.objects.get(id=workflow_id)
+            task.workflow = workflow
+            task.save()
+            return task
+
 
 class StatusSerializer(serializers.ModelSerializer):
 
diff --git a/atdb/taskdatabase/services/signals.py b/atdb/taskdatabase/services/signals.py
index 5edb49aa..a955fe09 100644
--- a/atdb/taskdatabase/services/signals.py
+++ b/atdb/taskdatabase/services/signals.py
@@ -143,7 +143,7 @@ def handle_post_save(sender, **kwargs):
         myStatus.save()
 
     # connect the task to a workflow after posting a (flat) task through the REST API
-    myTaskObject = add_workflow(myTaskObject)
+    #myTaskObject = add_workflow(myTaskObject)
     #myTaskObject = add_predecessor(myTaskObject)
 
     # temporarily disconnect the post_save handler to save the dataproduct (again) and avoiding recursion.
diff --git a/atdb/taskdatabase/templates/taskdatabase/index.html b/atdb/taskdatabase/templates/taskdatabase/index.html
index cf58afcb..bc40666a 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 (29 jan 2021 - 16:00)
+    <p class="footer"> Version 1.0.0 (1 feb 2021 - 17:00)
     <script type="text/javascript">
         (function(seconds) {
             var refresh,
-- 
GitLab