From e0fe138672e60aaee4fc9b18e7fe39194385f229 Mon Sep 17 00:00:00 2001 From: Mario Raciti <mario.raciti@inaf.it> Date: Fri, 23 Jul 2021 17:09:57 +0200 Subject: [PATCH] TMSS-770: Add SAS ID info in SUBs for the project reporting --- .../backend/src/tmss/tmssapp/adapters/reports.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py index 19020e64d15..4dfb7d52301 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -339,16 +339,24 @@ def _get_subs_and_durations_from_project(project_pk: int) -> ({}, {}): durations[f'total_succeeded_{prio.name}'], durations[f'total_observed_succeeded_{prio.name}'] = 0, 0 subs = project_subs.filter(priority_queue=prio.value) for sub in subs: - # Main SUB information to be returned + # Gathering info for reporting + sub_start_time = sub.start_time.isoformat() if sub.start_time else None + sub_stop_time = sub.stop_time.isoformat() if sub.stop_time else None sub_duration = sub.duration.total_seconds() sub_observed_duration = sub.observed_duration.total_seconds() if sub.observed_duration else 0 - # TODO: Check if start and stop time are None. - sub_info = {'id': sub.pk, 'name': sub.name, 'status': sub.status, 'start': sub.start_time.isoformat(), - 'stop': sub.stop_time.isoformat(), 'duration': sub_duration, 'observed_duration': sub_observed_duration} + # Info about the SUB to be returned + sub_info = {'id': sub.pk, 'name': sub.name, 'status': sub.status, 'start': sub_start_time, + 'stop': sub_stop_time, 'duration': sub_duration, 'observed_duration': sub_observed_duration} try: sub_info['target'] = get_target_observation_task_name_from_requirements_doc(sub) except Exception as e: sub_info['target'] = None + # Get SAS ID info + subtasks = models.Subtask.objects.filter(task_blueprints__scheduling_unit_blueprint=sub) + sub_info['SAS ID'] = {} + for template_name in ('observation control', 'preprocessing pipeline', 'pulsar pipeline'): + sub_info['SAS ID'][template_name] = [subtask.id for subtask in subtasks.filter(specifications_template__name=template_name)] + # Get ingest info dataproducts = models.Dataproduct.objects.filter(producer__subtask__specifications_template__type='ingest').filter(producer__subtask__state__value='finished').filter(producer__subtask__task_blueprints__scheduling_unit_blueprint=sub) # TODO: Maybe it would be useful to implement an 'ingested_stop_time' (and even an 'ingested_start_time' and consequently an 'ingested_duration'?) sub_info['ingested_date'] = max(dataproducts, key=lambda x: x.producer.subtask.stop_time).producer.subtask.stop_time if dataproducts else None -- GitLab