diff --git a/tangostationcontrol/observation/observation_controller.py b/tangostationcontrol/observation/observation_controller.py index 82a8b188e4b32727738eab5ab041a6d0e6dc1630..76af77a86f958c2e68d6b8df19c51b03768af4fe 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 d06846d19a96cda6ad8d347937643adf227a4f2b..d5faa551e0f9b12d44089df7a4f5e71e2f63980d 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")