From 3c18fdb925e3ab12a4f834a3d14bc8d39e162159 Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Wed, 22 Apr 2020 17:49:02 +0200 Subject: [PATCH] [toolchains][api] Improve exception raising --- beat/web/toolchains/api.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/beat/web/toolchains/api.py b/beat/web/toolchains/api.py index 564a6d749..61449b657 100644 --- a/beat/web/toolchains/api.py +++ b/beat/web/toolchains/api.py @@ -34,9 +34,8 @@ from django.core.exceptions import ValidationError from rest_framework.response import Response from rest_framework import serializers -from rest_framework.exceptions import PermissionDenied, ParseError +from rest_framework import exceptions as drf_exceptions -from ..common.responses import BadRequestResponse from ..common.api import ( CheckContributionNameView, ShareView, @@ -118,13 +117,10 @@ class RetrieveUpdateDestroyToolchainsView(RetrieveUpdateDestroyContributionView) model = Toolchain serializer_class = FullToolchainSerializer - def put(self, request, author_name, object_name, version=None): - if version is None: - return BadRequestResponse("A version number must be provided") - + def put(self, request, author_name, object_name, version): try: data = request.data - except ParseError as e: + except drf_exceptions.ParseError as e: raise serializers.ValidationError({"data": str(e)}) else: if not data: @@ -229,7 +225,7 @@ class RetrieveUpdateDestroyToolchainsView(RetrieveUpdateDestroyContributionView) # Check that the object can still be modified (if applicable, the # documentation can always be modified) if declaration is not None and not dbtoolchain.modifiable(): - raise PermissionDenied( + raise drf_exceptions.PermissionDenied( "The {} isn't modifiable anymore (either shared with someone else, or needed by an attestation)".format( dbtoolchain.model_name() ) @@ -263,7 +259,7 @@ class RetrieveUpdateDestroyToolchainsView(RetrieveUpdateDestroyContributionView) try: dbtoolchain.save() except Exception as e: - return BadRequestResponse(str(e)) + raise drf_exceptions.APIException(str(e)) # Nothing to return? if len(fields_to_return) == 0: -- GitLab