From 77cc651e221f8edafcd811e790ac61fafe58cc07 Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Thu, 23 Apr 2020 16:35:40 +0200 Subject: [PATCH] [team][api] Replace custom delete with perform_destroy hook --- beat/web/team/api.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/beat/web/team/api.py b/beat/web/team/api.py index f0defc8fa..69a74de5a 100644 --- a/beat/web/team/api.py +++ b/beat/web/team/api.py @@ -32,8 +32,8 @@ from django.db.models import Q from rest_framework import generics from rest_framework import permissions from rest_framework.response import Response -from rest_framework import status from rest_framework.reverse import reverse +from rest_framework import exceptions as drf_exceptions from .serializers import FullTeamSerializer from .serializers import SimpleTeamSerializer @@ -42,7 +42,7 @@ from .serializers import TeamUpdateSerializer from .models import Team from .permissions import IsOwner, HasPrivacyLevel -from ..common.responses import BadRequestResponse, ForbiddenResponse +from ..common.responses import BadRequestResponse from ..common.mixins import CommonContextMixin @@ -122,18 +122,13 @@ class TeamDetailView(CommonContextMixin, generics.RetrieveUpdateDestroyAPIView): context["user"] = self.request.user return context - def delete(self, request, owner_name, team_name): - team = self.get_object() - - # Check that the team can still be deleted - if not (team.deletable()): - return ForbiddenResponse( + def perform_destroy(self, instance): + if not instance.deletable(): + raise drf_exceptions.PermissionDenied( "The team isn't deletable (it has been used to share %d objects with its members)" - % team.total_shares() + % instance.total_shares() ) - - team.delete() - return Response(status=status.HTTP_204_NO_CONTENT) + return super().perform_destroy(instance) def update(self, request, owner_name, team_name): team = self.get_object() -- GitLab