Skip to content
Snippets Groups Projects
Commit 4e58fcc0 authored by Reinder Kraaij's avatar Reinder Kraaij :eye:
Browse files

Let there be proper iso format time

parent 90c7e3b8
No related branches found
No related tags found
1 merge request!1073Let there be proper iso format time
......@@ -30,3 +30,4 @@ grpcio-tools # Apache 2
parse # MIT
mergedeep # MIT
getmac # MIT
python-dateutil # remove when on python 3.12
\ No newline at end of file
......@@ -3,6 +3,7 @@
from datetime import datetime
from typing import Sequence
from dateutil import parser
from tangostationcontrol.configuration.configuration_base import _ConfigurationBase
from tangostationcontrol.configuration.dithering import Dithering
......@@ -11,7 +12,6 @@ from tangostationcontrol.configuration.sap import Sap
from tangostationcontrol.configuration.sst import SST
from tangostationcontrol.configuration.xst import XST
class ObservationFieldSettings(_ConfigurationBase):
def __init__(
self,
......@@ -48,7 +48,7 @@ class ObservationFieldSettings(_ConfigurationBase):
"""Transparently convert datetime to string in isoformat"""
if time and not isinstance(time, datetime):
try:
datetime.fromisoformat(time)
parser.isoparse(time)
except ValueError as ex:
raise ex
if time and isinstance(time, datetime):
......
......@@ -9,6 +9,7 @@ from tangostationcontrol.rpc.common import (
reply_on_exception,
)
from tangostationcontrol.common.proxies.proxy import create_device_proxy
from tangostationcontrol.configuration import ObservationSettings
logger = logging.getLogger()
......@@ -21,10 +22,43 @@ class Observation(observation_pb2_grpc.ObservationServicer):
def StartObservation(
self, request: observation_pb2.StartObservationRequest, context
):
logger.info("Start observation request incomming %s", request.configuration)
# Validate before handing over to Observation Control
observation_id = ""
# guard against empty jsons incomming
if request.configuration is not None and request.configuration.strip() != "{}" :
observationsettings = ObservationSettings.from_json(request.configuration)
logger.info("Converted ObservationSettings %s", observationsettings)
if observationsettings.antenna_fields:
primary_antenna = observationsettings.antenna_fields[0]
observation_id = primary_antenna.observation_id
logger.info(
"Creating device proxy. ",
extra={
"observation_id": observation_id,
"start_time": primary_antenna.start_time,
"stop_time": primary_antenna.stop_time,
},
)
else:
logger.error(
"No Observation Id found in observation %s", request.configuration
)
else:
logger.error(
"No Observation configuration found %s", request.configuration
)
observation_control = create_device_proxy(
"STAT/ObservationControl/1", self.TIMEOUT
)
observation_control.add_observation(request.configuration)
logger.info(
"Start observation request added to Add observation.",
extra={"observation_id": observation_id},
)
return observation_pb2.ObservationReply(success=True)
@reply_on_exception(observation_pb2.ObservationReply)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment