diff --git a/gracedb/api/v1/events/views.py b/gracedb/api/v1/events/views.py index f8ff46a5b0e103d32a884419b84e621a30cba1c1..86d2c4b7cbcc6a38797b24cadc307efa213559a7 100644 --- a/gracedb/api/v1/events/views.py +++ b/gracedb/api/v1/events/views.py @@ -40,7 +40,7 @@ from core.vfile import VersionedFile from events.buildVOEvent import buildVOEvent, VOEventBuilderException from events.forms import CreateEventForm from events.models import Event, Group, Search, Pipeline, EventLog, Tag, \ - Label, EMGroup, EMBBEventLog, EMSPECTRUM, VOEvent + Label, Labelling, EMGroup, EMBBEventLog, EMSPECTRUM, VOEvent from events.permission_utils import user_has_perm, filter_events_for_user, \ is_external, check_external_file_access from events.translator import handle_uploaded_data @@ -730,11 +730,13 @@ class EventLabel(InheritPermissionsAPIView): @event_and_auth_required def delete(self, request, event, label): + try: rv = delete_label(event, request, label) + except Labelling.DoesNotExist as e: + return Response(e.message, status=status.HTTP_404_NOT_FOUND) except (ValueError, Label.ProtectedLabelError) as e: - return Response(e.message, - status=status.HTTP_400_BAD_REQUEST) + return Response(e.message, status=status.HTTP_400_BAD_REQUEST) return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/gracedb/events/view_logic.py b/gracedb/events/view_logic.py index 14c168c793c7036b66a754d3705692a7716012ec..8987f65a5b7666ad012572e5fa79dc4872e3b656 100644 --- a/gracedb/events/view_logic.py +++ b/gracedb/events/view_logic.py @@ -240,9 +240,9 @@ def delete_label(event, request, labelName, can_remove_protected=False, # Next, check if the label is in the list of labels for the event. Throw out an # error if it isn't. There might be a more elegant way of doing this. - if label not in event.labels.all(): - d['warning'] = "No label '%s' associated with event %s" % (labelName, event.graceid) - raise ValueError("No label '%s' associated with event %s" % (labelName, event.graceid)) + if not event.labelling_set.filter(label__name=labelName).exists(): + d['warning'] = "No label '%s' associated with event %s" % (labelName, event.graceid) + raise Labelling.DoesNotExist("No label '%s' associated with event %s" % (labelName, event.graceid)) else: this_label = Labelling.objects.get( event = event,