From e82c6edea20308dfdb495b73f332dcad1a02a66c Mon Sep 17 00:00:00 2001 From: Jorrit Schaap <schaap@astron.nl> Date: Thu, 31 Aug 2023 08:24:55 +0200 Subject: [PATCH] catch parsing errors --- SAS/TMSS/backend/src/tmss/tmssapp/views.py | 49 +++++++++++----------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/views.py b/SAS/TMSS/backend/src/tmss/tmssapp/views.py index 94c96a424f0..02059accc2a 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/views.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/views.py @@ -3,7 +3,7 @@ import sys import logging logger = logging.getLogger(__name__) -from django.http import HttpResponse, JsonResponse, Http404, FileResponse, HttpResponseNotFound +from django.http import HttpResponse, JsonResponse, Http404, FileResponse, HttpResponseNotFound, HttpResponseServerError from rest_framework.response import Response as RestResponse from rest_framework import status from django.shortcuts import get_object_or_404, render @@ -20,7 +20,6 @@ from rest_framework.decorators import authentication_classes, permission_classes from django.apps import apps import re from lofar.sas.tmss.tmss.tmssapp.serializers import SchedulingUnitDraftSerializer, SchedulingUnitBlueprintSerializer - from rest_framework.decorators import api_view, renderer_classes from lofar.sas.tmss.tmss.tmssapp.renderers.ImagePNGRenderer import ImagePNGRenderer from datetime import datetime, date, time, timedelta @@ -224,28 +223,30 @@ def utc(request): ]) @api_view(['GET']) def lst(request): - # Handling optional parameters via django paths in urls.py is a pain, we access them on the request directly instead. - timestamp = request.GET.get('timestamp', None) - station = request.GET.get('station', None) - longitude = request.GET.get('longitude', None) - - # conversions - if timestamp: - timestamp = dateutil.parser.parse(timestamp) # isot to datetime - if longitude: - longitude = float(longitude) - - if station: - lst_lon = local_sidereal_time_for_utc_and_station(timestamp, station) - elif longitude: - lst_lon = local_sidereal_time_for_utc_and_longitude(timestamp, longitude) - else: - # fall back to defaults - lst_lon = local_sidereal_time_for_utc_and_station(timestamp) - - # todo: do we want to return a dict, so users can make sure their parameters were parsed correctly instead? - return HttpResponse(str(lst_lon), content_type='text/plain') - + try: + # Handling optional parameters via django paths in urls.py is a pain, we access them on the request directly instead. + timestamp = request.GET.get('timestamp', None) + station = request.GET.get('station', None) + longitude = request.GET.get('longitude', None) + + # conversions + if timestamp: + timestamp = dateutil.parser.parse(timestamp) # iso to datetime + if longitude: + longitude = float(longitude) + + if station: + lst_lon = local_sidereal_time_for_utc_and_station(timestamp, station) + elif longitude: + lst_lon = local_sidereal_time_for_utc_and_longitude(timestamp, longitude) + else: + # fall back to defaults + lst_lon = local_sidereal_time_for_utc_and_station(timestamp) + + # todo: do we want to return a dict, so users can make sure their parameters were parsed correctly instead? + return HttpResponse(str(lst_lon), content_type='text/plain') + except Exception as e: + return HttpResponseServerError(str(e), content_type='text/plain') @permission_classes([AllowAny]) @authentication_classes([AllowAny]) -- GitLab