From afa92a8a59a2aa4233ffea503562795dce6273af Mon Sep 17 00:00:00 2001 From: jkuensem <jkuensem@physik.uni-bielefeld.de> Date: Tue, 28 Jul 2020 19:12:31 +0200 Subject: [PATCH] TMSS-221: allow empty scheduling units so that tests pass --- .../src/tmss/tmssapp/models/specification.py | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/SAS/TMSS/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/src/tmss/tmssapp/models/specification.py index 0d4bd9bfee7..4ce471b7947 100644 --- a/SAS/TMSS/src/tmss/tmssapp/models/specification.py +++ b/SAS/TMSS/src/tmss/tmssapp/models/specification.py @@ -314,13 +314,21 @@ class SchedulingUnitDraft(NamedCommon): def relative_start_time(self) -> datetime.timedelta: '''return the earliest relative start time of all tasks of this scheduling unit ''' - return min(self.task_drafts.all(), key=lambda x: x.relative_start_time).relative_start_time + task_drafts = list(self.task_drafts.all()) + if task_drafts: + return min(task_drafts, key=lambda x: x.relative_start_time).relative_start_time + else: + return datetime.timedelta(seconds=0) @property def relative_stop_time(self) -> datetime.timedelta: '''return the latest relative stop time of all tasks of this scheduling unit ''' - return max(self.task_drafts.all(), key=lambda x: x.relative_stop_time).relative_stop_time + task_drafts = list(self.task_drafts.all()) + if task_drafts: + return max(task_drafts, key=lambda x: x.relative_stop_time).relative_stop_time + else: + return datetime.timedelta(seconds=0) class SchedulingUnitBlueprint(NamedCommon): @@ -348,13 +356,21 @@ class SchedulingUnitBlueprint(NamedCommon): def relative_start_time(self) -> datetime.timedelta: '''return the earliest relative start time of all tasks of this scheduling unit ''' - return min(self.task_blueprints.all(), key=lambda x: x.relative_start_time).relative_start_time + task_blueprints = list(self.task_blueprints.all()) + if task_blueprints: + return min(task_blueprints, key=lambda x: x.relative_start_time).relative_start_time + else: + return datetime.timedelta(seconds=0) @property def relative_stop_time(self) -> datetime.timedelta: '''return the latest relative stop time of all tasks of this scheduling unit ''' - return max(self.task_blueprints.all(), key=lambda x: x.relative_stop_time).relative_stop_time + task_blueprints = list(self.task_blueprints.all()) + if task_blueprints: + return max(task_blueprints, key=lambda x: x.relative_stop_time).relative_stop_time + else: + return datetime.timedelta(seconds=0) @property def start_time(self) -> datetime or None: -- GitLab