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