diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 4251f655c6a3d263495cec3f61db8176bca8e1c0..ad672958f9b81123bb87b558a835e7934e167d8a 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 a1fc74d1f58e3b69fc5905b6f27e7ab2a34d124d..9db22fd558ca3819d8400e59f675d37adc89d58c 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 5edb49aaeeaa5fef0d6372023a56d22829207001..a955fe09eff6b53fab2db47cd8b9cfdc2d4a842f 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 cf58afcb7291f9ab99eaf1cde4e060c047e7b82d..bc40666a8d4f696384d8594a2af90b82490e3bf5 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,