1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

utilities: move protectederror handling to modelviewset

This commit is contained in:
hellerve
2019-05-28 21:11:23 +02:00
parent cc87d99017
commit 2c7bad9fff
3 changed files with 19 additions and 9 deletions

View File

@@ -4,7 +4,7 @@ import pytz
from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
from django.db.models import ManyToManyField
from django.db.models import ManyToManyField, ProtectedError
from django.http import Http404
from rest_framework.exceptions import APIException
from rest_framework.permissions import BasePermission
@@ -248,6 +248,22 @@ class ModelViewSet(_ModelViewSet):
# Fall back to the hard-coded serializer class
return self.serializer_class
def dispatch(self, request, *args, **kwargs):
try:
return super().dispatch(request, *args, **kwargs)
except ProtectedError as e:
models = '\n'.join(
'- {} ({})'.format(o, o._meta)
for o in e.protected_objects.all()
)
msg = 'You tried deleting a model that is protected by:\n{}'.format(models)
return self.finalize_response(
request,
Response({'detail': msg}, status=409),
*args,
**kwargs
)
class FieldChoicesViewSet(ViewSet):
"""