From 790bef4d3f134ea1c2d0f7bf5c8e8ff6e19a692c Mon Sep 17 00:00:00 2001
From: Hannes Feldt <feldt@astron.nl>
Date: Thu, 3 Apr 2025 11:31:54 +0000
Subject: [PATCH] Fix datetime issue

---
 .../observation/observation_controller.py        | 16 +++++++++-------
 tests/observation/test_observation_controller.py | 10 ++++++----
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/tangostationcontrol/observation/observation_controller.py b/tangostationcontrol/observation/observation_controller.py
index 82a8b188e..76af77a86 100644
--- a/tangostationcontrol/observation/observation_controller.py
+++ b/tangostationcontrol/observation/observation_controller.py
@@ -1,7 +1,7 @@
-# Copyright (C) 2022 ASTRON (Netherlands Institute for Radio Astronomy)
-# SPDX-License-Identifier: Apache-2.0
+#  Copyright (C) 2025 ASTRON (Netherlands Institute for Radio Astronomy)
+#  SPDX-License-Identifier: Apache-2.0
 
-from datetime import datetime
+from datetime import datetime, timezone
 import logging
 from typing import Callable, Type
 
@@ -87,10 +87,12 @@ class ObservationController(dict[int, Observation]):
         # Check further properties that cannot be validated through a JSON schema
         # TODO(Corne): Discuss do we want this?
         for observation_field_settings in settings.antenna_fields:
-            if (
-                datetime.fromisoformat(observation_field_settings.stop_time)
-                <= datetime.now()
-            ):
+            start = datetime.fromisoformat(observation_field_settings.stop_time)
+
+            if not start.tzinfo:
+                start = start.replace(tzinfo=timezone.utc)
+
+            if start <= datetime.now(timezone.utc):
                 raise ValueError(
                     "Cannot start observation "
                     f"{observation_field_settings.observation_id} because antenna "
diff --git a/tests/observation/test_observation_controller.py b/tests/observation/test_observation_controller.py
index d06846d19..d5faa551e 100644
--- a/tests/observation/test_observation_controller.py
+++ b/tests/observation/test_observation_controller.py
@@ -1,8 +1,8 @@
-# Copyright (C) 2022 ASTRON (Netherlands Institute for Radio Astronomy)
-# SPDX-License-Identifier: Apache-2.0
+#  Copyright (C) 2025 ASTRON (Netherlands Institute for Radio Astronomy)
+#  SPDX-License-Identifier: Apache-2.0
 
 import copy
-from datetime import datetime, timedelta
+from datetime import datetime, timedelta, timezone
 from typing import Dict
 from typing import List
 from unittest import mock
@@ -128,7 +128,9 @@ class TestObservationController(base.TestCase):
     def test_add_observation(self, _m_tango_util):
         settings = get_observation_settings_two_fields_core()
         for antenna_field in settings.antenna_fields:
-            antenna_field.stop_time = (datetime.now() + timedelta(days=1)).isoformat()
+            antenna_field.stop_time = (
+                datetime.now(timezone.utc) + timedelta(days=1)
+            ).isoformat()
 
         sut = obs_module.ObservationController("DMR")
 
-- 
GitLab