diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py index 79bbd92d647b5d2e1d06239c7e4a7ce5e2137174..8d5fa0f52e8f5bd4c7c1660601e4f3f9c21c7df0 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/adapters/reports.py @@ -687,13 +687,13 @@ class FailureReport(): system_events = self.system_events.filter(**{f'{field_name}__value': d[f'{field_name}__value']}) affected_tasks = models.TaskBlueprint.objects.filter(system_events__in=system_events) affected_units = (models.SchedulingUnitBlueprint.objects.filter(task_blueprints__in=affected_tasks)) - total_on_sky_duration_lost = affected_units.aggregate(Sum(F('on_sky_duration')))['on_sky_duration__sum'] + total_on_sky_duration_lost = affected_units.aggregate(on_sky_duration__sum=Sum(Coalesce(F('on_sky_duration'), timedelta(0))))['on_sky_duration__sum'] # convert durations to seconds and add derived values d.update({'duration_lost_event': d['duration_lost_event'].total_seconds(), 'duration_lost_on_sky': total_on_sky_duration_lost.total_seconds() if total_on_sky_duration_lost else 0, 'percent_of_wall_time_lost_event': 100 * d['duration_lost_event'].total_seconds() / wall_time, - 'percent_of_wall_time_lost_on_sky': total_on_sky_duration_lost.total_seconds() / wall_time}) + 'percent_of_wall_time_lost_on_sky': total_on_sky_duration_lost.total_seconds() / wall_time if total_on_sky_duration_lost else 0}) aggregates[f'by_{field_name}'] = group_aggregates return aggregates