From 20eeb570a4cb1ec30c6200cd82a40b47f9ee7276 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 23 Mar 2021 09:51:08 +0100
Subject: [PATCH] TMSS-604: fixed output dataproduct filtering

---
 SAS/TMSS/backend/src/tmss/tmssapp/adapters/parset.py | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/parset.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/parset.py
index 6dc6a3d439f..68ed8f2dd28 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/parset.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/parset.py
@@ -107,11 +107,7 @@ def _convert_correlator_settings_to_parset_dict(subtask: models.Subtask, spec: d
                     parset[beam_prefix+"Correlator.angle2"] = phase_center['pointing']['angle2']
 
 
-        # TODO: do not use SubtaskOutput.objects.filter but make subtask.subtask_outputs work
-        subtask_outputs = list(models.SubtaskOutput.objects.filter(subtask_id=subtask.id))
-        subtask_output_ids = [o.id for o in subtask_outputs]
-
-        dataproducts = list(models.Dataproduct.objects.filter(producer_id__in=subtask_output_ids).filter(dataformat=Dataformat.Choices.MEASUREMENTSET.value).filter(datatype=Datatype.Choices.VISIBILITIES))
+        dataproducts = list(subtask.output_dataproducts.filter(dataformat__value=Dataformat.Choices.MEASUREMENTSET.value).filter(datatype__value=Datatype.Choices.VISIBILITIES.value).order_by('filename'))
 
         # marshall dataproducts, but only if they're supplied. in some use cases, we want a parset before the subtask is scheduled.
         correlator_dataproducts = []
@@ -138,12 +134,8 @@ def _convert_beamformer_settings_to_parset_dict(subtask: models.Subtask, spec: d
 
     parset = {}
 
-    # TODO: do not use SubtaskOutput.objects.filter but make subtask.subtask_outputs work
-    subtask_outputs = list(models.SubtaskOutput.objects.filter(subtask_id=subtask.id))
-    subtask_output_ids = [o.id for o in subtask_outputs]
-
     # TODO: don't assume ordering by filename is sufficient: we need to inspect the dataproduct properties to make sure saps and subbands are in the correct order
-    dataproducts = list(models.Dataproduct.objects.filter(producer_id__in=subtask_output_ids).filter(dataformat=Dataformat.Choices.MEASUREMENTSET.value).filter(datatype=Datatype.Choices.TIME_SERIES.value).order_by('filename'))
+    dataproducts = list(subtask.output_dataproducts.filter(dataformat__value=Dataformat.Choices.BEAMFORMED.value).filter(datatype__value=Datatype.Choices.TIME_SERIES.value).order_by('filename'))
 
     # Lists of coherent and incoherent dataproducts that will be produced, in the order COBALT wants them
     coherent_dataproducts = []
-- 
GitLab