From 35f21d5a2b51f9a891ef7f1fe7428fe51c5807af Mon Sep 17 00:00:00 2001
From: Vermaas <vermaas@astron.nl>
Date: Tue, 26 Mar 2024 13:55:34 +0100
Subject: [PATCH] handle review comments

---
 atdb/taskdatabase/serializers.py              |  2 +-
 atdb/taskdatabase/services/algorithms.py      | 35 +++++++------------
 .../tests/test_views_get_summary.py           |  1 -
 atdb/taskdatabase/views.py                    |  1 +
 4 files changed, 15 insertions(+), 24 deletions(-)

diff --git a/atdb/taskdatabase/serializers.py b/atdb/taskdatabase/serializers.py
index f80c4eb1..55484a36 100644
--- a/atdb/taskdatabase/serializers.py
+++ b/atdb/taskdatabase/serializers.py
@@ -132,7 +132,7 @@ class TaskReadSerializerFast(serializers.ModelSerializer):
     """
     class Meta:
         model = Task
-        fields = ['id','task_type','creationTime','filter','predecessor','predecessor_status',
+        fields = ['id','task_type','is_summary','creationTime','filter','predecessor','predecessor_status',
                   #'joined_input_tasks', 'joined_output_task', 'joined_status',
                   'project','sas_id','priority','purge_policy','cleanup_policy','resume',
                   'workflow',
diff --git a/atdb/taskdatabase/services/algorithms.py b/atdb/taskdatabase/services/algorithms.py
index b29eafc3..8534a2e2 100644
--- a/atdb/taskdatabase/services/algorithms.py
+++ b/atdb/taskdatabase/services/algorithms.py
@@ -1096,7 +1096,7 @@ def construct_linc_summary(task):
 
         # find the summary in the quality json structure
         try:
-            #NV_25mar2023:
+            #NV_25mar2024:
             # it is not yet clear if LINC will have its 'summary' metadata directly under outputs or under outputs.quality
             # for now assuming directly under outputs
             #summary = task.quality_json["summary"]
@@ -1138,10 +1138,7 @@ def construct_summary(task, format='html'):
 
     if format=='html':
         # construct the appropriate summary html
-        if summary_flavour == SummaryFlavour.DEFAULT.value:
-            return construct_default_summary(task)
-
-        elif summary_flavour == SummaryFlavour.IMAGING_COMPRESSION.value:
+        if summary_flavour == SummaryFlavour.IMAGING_COMPRESSION.value:
             return construct_imaging_summary(task)
 
         elif summary_flavour == SummaryFlavour.LINC_CALIBRATOR.value:
@@ -1150,17 +1147,18 @@ def construct_summary(task, format='html'):
         elif summary_flavour == SummaryFlavour.LINC_TARGET.value:
             return construct_linc_summary(task)
 
-    elif format=='json':
+        return construct_default_summary(task)
 
-        if summary_flavour == SummaryFlavour.DEFAULT.value:
-            return construct_default_summary_json(task)
+    elif format=='json':
 
-        elif summary_flavour == SummaryFlavour.LINC_CALIBRATOR.value:
+        if summary_flavour == SummaryFlavour.LINC_CALIBRATOR.value:
             return construct_linc_summary_json(task)
 
         elif summary_flavour == SummaryFlavour.LINC_TARGET.value:
             return construct_linc_summary_json(task)
 
+        return construct_default_summary_json(task)
+
     return None
 
 
@@ -1172,20 +1170,18 @@ def construct_default_summary_json(task):
 
     sas_id = task.sas_id
     title = f'Summary File for SAS_ID {task.sas_id}'
-    summary_json = {}
-    summary_json['title'] = title
+    summary_json = {'title':title}
 
     tasks = Task.objects.filter(sas_id=sas_id)
     tasks_records = []
 
     for task in tasks:
-        task_record = {}
 
         # skip 'suspended' and 'discarded' tasks
         if task.status in ['suspended', 'discarded']:
             continue
 
-        task_record['task'] = task.id
+        task_record = {'task': task.id}
 
         # find the summary in the quality json structure
         try:
@@ -1217,15 +1213,11 @@ def construct_default_summary_json(task):
                 except:
                     pass
 
-                try:
+                if 'added' in record:
                     task_record['added'] = record['added']
-                except:
-                    pass
 
-                try:
+                if 'deleted' in record:
                     task_record['deleted'] = record['deleted']
-                except:
-                    pass
 
                 try:
                     key = task.calculated_qualities['per_task']
@@ -1279,8 +1271,7 @@ def construct_linc_summary_json(task):
 
     sas_id = task.sas_id
     title = f'Summary File for SAS_ID {task.sas_id}'
-    summary_json = {}
-    summary_json['title'] = title
+    summary_json = {'title': title}
 
     tasks = Task.objects.filter(sas_id=sas_id)
     tasks_records = []
@@ -1301,7 +1292,7 @@ def construct_linc_summary_json(task):
 
         # find the summary in the quality json structure
         try:
-            #NV_25mar2023:
+            #NV_25mar2024:
             # it is not yet clear if LINC will have its 'summary' metadata directly under outputs or under outputs.quality
             # for now assuming directly under outputs. If that turns out differently then change the line below accordingly.
             # summary = task.quality_json["summary"]
diff --git a/atdb/taskdatabase/tests/test_views_get_summary.py b/atdb/taskdatabase/tests/test_views_get_summary.py
index df31ba49..22deb354 100644
--- a/atdb/taskdatabase/tests/test_views_get_summary.py
+++ b/atdb/taskdatabase/tests/test_views_get_summary.py
@@ -8,7 +8,6 @@ import json
 
 class GetSummaryTestCase(TestCase):
     def setUp(self):
-        print("setUp: Run once for every test method to setup clean data.")
 
         workflow_requantisation = Workflow(workflow_uri="psrfits_requantisation")
         workflow_requantisation.save()
diff --git a/atdb/taskdatabase/views.py b/atdb/taskdatabase/views.py
index f28ab7a5..e3469e62 100644
--- a/atdb/taskdatabase/views.py
+++ b/atdb/taskdatabase/views.py
@@ -1711,6 +1711,7 @@ def GetSummary(request, sas_id, format):
     This is the same informtion and algorithm as used when the user clicks the SUM button on the Validation page.
     See documentation: https://drive.google.com/file/d/16R8L06OFiKHFHBUA6FhrNVZVAaQBC2tU/view?usp=sharing
 
+    The return is either a JsonResponse (for format='json') or a HttpResponse for format is 'html' or 'pdf'
     example: /atdb/get_summary/606942/json
     """
     try:
-- 
GitLab