diff --git a/beat/web/team/api.py b/beat/web/team/api.py index f0defc8fae83d7856db4301189990caf020e7fa7..69a74de5a0f481ce487c680c89b4c592a738535b 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()