From af997bd5f5e256ede51761640be2c299e5cee0b9 Mon Sep 17 00:00:00 2001 From: Vermaas <vermaas@astron.nl> Date: Fri, 7 Jul 2023 13:52:46 +0200 Subject: [PATCH] add joined_status (property) field --- atdb/taskdatabase/models.py | 18 ++++++++++++++++++ atdb/taskdatabase/serializers.py | 5 +++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/atdb/taskdatabase/models.py b/atdb/taskdatabase/models.py index 1be1e5a9..35ac5ff9 100644 --- a/atdb/taskdatabase/models.py +++ b/atdb/taskdatabase/models.py @@ -292,6 +292,24 @@ class Task(models.Model): return False return True + @property + def joined_status(self): + # if a task has joined_input_tasks, then check their status + try: + joined_input_tasks = self.joined_input_tasks.all() + status = None + for task in joined_input_tasks: + if status and task.status != status: + return None + status = task.status + + # all statusses are the same, return it + return status + except Exception as e: + print(e) + + return "unknown" + # NV: this shows the latest status change, but because it is a derived property it cannot be sorted. # This functionality was not requested, and to avoid additional requests about 'sort' functionalty # it is currently commented out. Could be of use later though, so I leave it in for now. diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py index 37341fda..a233c916 100644 --- a/atdb/taskdatabase/serializers.py +++ b/atdb/taskdatabase/serializers.py @@ -91,7 +91,8 @@ class TaskReadSerializer(serializers.ModelSerializer): class Meta: model = Task fields = ['id','task_type','creationTime','filter', - 'predecessor','predecessor_status','successors', 'joined_input_tasks','joined_output_task', + 'predecessor','predecessor_status','successors', + 'joined_input_tasks','joined_output_task','joined_status', 'project','sas_id','priority','purge_policy','cleanup_policy','resume', 'workflow', 'stage_request_id', @@ -123,7 +124,7 @@ class TaskReadSerializerFast(serializers.ModelSerializer): class Meta: model = Task fields = ['id','task_type','creationTime','filter','predecessor','predecessor_status', - 'joined_input_tasks', 'joined_output_task', + 'joined_input_tasks', 'joined_output_task', 'joined_status' 'project','sas_id','priority','purge_policy','cleanup_policy','resume', 'workflow', 'stage_request_id', -- GitLab