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