From 5a575ea80f55b99b84a488c227cacd8183c1e615 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Thu, 19 Oct 2023 17:39:05 +0200
Subject: [PATCH] TMSS-2823: the problem with the specification from the
 test_bugfix_TMSS_2823_coarse_fine_grid is that the delta-time between target
 transits is larger than the transit_offset window width. Made a sanity check,
 and apply it both in the draft and blueprint to prevent this ill
 specification

---
 .../src/tmss/tmssapp/models/specification.py      | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
index 56eb514b26f..6e8307da586 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
@@ -1162,13 +1162,14 @@ class SchedulingUnitCommonPropertiesMixin:
                 for task in self.observation_tasks:
                     if task.is_target_observation:
                         pointings = get_transit_offset_pointings(task)
-                        transits = [p.transit_lst for p in pointings]
-                        earliest_transit = min(transits)
-                        latest_transit = max(transits)
-                        delta_transit = datetime.datetime.combine(datetime.date.today(), latest_transit) - datetime.datetime.combine(datetime.date.today(), earliest_transit)
-                        delta_transit_seconds = delta_transit.total_seconds()
-                        if delta_transit_seconds > transit_window_width_seconds:
-                            raise RuleValidationException("time between latest and earliest transit for targets in task id=%s name='%s' su_id=%s is larger than the transit_offset window itself: delta_transit=%dsec > transit_window_width=%ssec" % (task.id, task.name, self.id, delta_transit_seconds, transit_window_width_seconds))
+                        transits = [p.transit_lst for p in pointings if p.direction_type=="J2000"]
+                        if transits:
+                            earliest_transit = min(transits)
+                            latest_transit = max(transits)
+                            delta_transit = datetime.datetime.combine(datetime.date.today(), latest_transit) - datetime.datetime.combine(datetime.date.today(), earliest_transit)
+                            delta_transit_seconds = delta_transit.total_seconds()
+                            if delta_transit_seconds > transit_window_width_seconds:
+                                raise RuleValidationException("time between latest and earliest transit for targets in task id=%s name='%s' su_id=%s is larger than the transit_offset window itself: delta_transit=%dsec > transit_window_width=%ssec" % (task.id, task.name, self.id, delta_transit_seconds, transit_window_width_seconds))
 
 
 class SchedulingUnitDraft(TemplateSchemaMixin, ProjectPropertyMixin, SchedulingUnitCommonPropertiesMixin, RefreshFromDbInvalidatesCachedPropertiesMixin, NamedCommon):
-- 
GitLab