From c6052351583e75126d1e411f4a2a3facaabf3e9d Mon Sep 17 00:00:00 2001 From: Branson Stephens <branson.stephens@ligo.org> Date: Wed, 30 Mar 2016 15:38:55 -0500 Subject: [PATCH] Fixed bug #3901. --- gracedb/api.py | 9 +++++++-- gracedb/views.py | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gracedb/api.py b/gracedb/api.py index 14fadd595..bd24a887d 100644 --- a/gracedb/api.py +++ b/gracedb/api.py @@ -48,7 +48,7 @@ from utils.vfile import VersionedFile # for checking queries in the evnet that the user is external # from view_utils import BadFARRange, check_query_far_range -from query import parseQuery +from query import parseQuery, ParseException ################################################################## @@ -415,7 +415,12 @@ class EventList(APIView): msg = 'FAR query out of range, upper limit must be below %s' % settings.VOEVENT_FAR_FLOOR d = {'error': msg } return Response(d,status=status.HTTP_400_BAD_REQUEST) - + except ParseException: + d = {'error': 'Invalid query' } + return Response(d,status=status.HTTP_400_BAD_REQUEST) + except Exception, e: + d = {'error': str(e) } + return Response(d,status=status.HTTP_500_INTERNAL_SERVER_ERROR) form = SimpleSearchForm(request.GET) if form.is_valid(): events = form.cleaned_data['query'] diff --git a/gracedb/views.py b/gracedb/views.py index 6bc2ed41e..fd99104f8 100644 --- a/gracedb/views.py +++ b/gracedb/views.py @@ -43,7 +43,7 @@ from django.utils.functional import wraps # for checking queries in the evnet that the user is external # from view_utils import BadFARRange, check_query_far_range -from query import parseQuery +from query import parseQuery, ParseException # # A wrapper for retrieving an event and replacing graceid @@ -441,6 +441,12 @@ def search(request, format=""): except BadFARRange: msg = 'FAR query out of range, upper limit must be below %s' % settings.VOEVENT_FAR_FLOOR return HttpResponseBadRequest(msg) + except ParseException: + # If the user's query throws a parse exception, it is safe to + # proceed and show the error message in the search results template (red star) + pass + except Exception, e: + return HttpResponseServerError(str(e)) if form.is_valid(): objects = form.cleaned_data['query'] get_neighbors = form.cleaned_data['get_neighbors'] -- GitLab