From 9274eac6e54d59aaaab0477fef418fd14713fa43 Mon Sep 17 00:00:00 2001
From: Mario Raciti <mario.raciti@inaf.it>
Date: Tue, 27 Jul 2021 12:25:16 +0200
Subject: [PATCH] TMSS-770: Update get_saps for project reporting

---
 .../src/tmss/tmssapp/adapters/reports.py      | 21 +++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
index fa7a26739c0..f7843686994 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py
@@ -405,5 +405,22 @@ def _get_saps(project_pk: int) -> []:
     """
     Help function to retrieve SAPs.
     """
-    # TODO: For each unique target (SAP name) get the sum of target observation durations from the tasks.
-    return [{'sap_name': 'placeholder', 'total_exposure': 0}, ]
+    result = []
+
+    # TODO: Check if this is the proper way.
+
+    project_subs = models.SchedulingUnitBlueprint.objects.filter(draft__scheduling_set__project__pk=project_pk)
+    for sub in project_subs:
+        target_name, total_exposure = None, 0
+        try:
+            target_name = get_target_observation_task_name_from_requirements_doc(sub)
+        except Exception as e:
+            pass
+        control_subtasks = models.Subtask.objects.filter(task_blueprints__scheduling_unit_blueprint=sub).filter(specifications_template__name='observation control')
+        for cs in control_subtasks:
+            if target_name in cs.SAPs.all():
+                total_exposure += cs.duration.total_seconds()
+        if target_name:
+            result.append({'sap_name': target_name, 'total_exposure': total_exposure})
+
+    return result
-- 
GitLab