Jeremy Stretch 6 лет назад
Родитель
Сommit
28facca291
3 измененных файлов с 4 добавлено и 5 удалено
  1. 1 0
      CHANGELOG.md
  2. 2 5
      netbox/utilities/api.py
  3. 1 0
      netbox/utilities/middleware.py

+ 1 - 0
CHANGELOG.md

@@ -16,6 +16,7 @@
 * [#3150](https://github.com/digitalocean/netbox/issues/3150) - Fix formatting of cable length during cable trace
 * [#3184](https://github.com/digitalocean/netbox/issues/3184) - Correctly display color block for white cables
 * [#3190](https://github.com/digitalocean/netbox/issues/3190) - Fix custom field rendering for Jinja2 export templates
+* [#3211](https://github.com/digitalocean/netbox/issues/3211) - Fix error handling when attempting to delete a protected object via API
 * [#3223](https://github.com/digitalocean/netbox/issues/3223) - Fix filtering devices by "has power outlets"
 
 ---

+ 2 - 5
netbox/utilities/api.py

@@ -252,11 +252,8 @@ class ModelViewSet(_ModelViewSet):
         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)
+            models = ['{} ({})'.format(o, o._meta) for o in e.protected_objects.all()]
+            msg = 'Unable to delete object. The following dependent objects were found: {}'.format(', '.join(models))
             return self.finalize_response(
                 request,
                 Response({'detail': msg}, status=409),

+ 1 - 0
netbox/utilities/middleware.py

@@ -70,6 +70,7 @@ class ExceptionHandlingMiddleware(object):
             custom_template = 'exceptions/import_error.html'
         elif isinstance(exception, PermissionError):
             custom_template = 'exceptions/permission_error.html'
+
         # Return a custom error message, or fall back to Django's default 500 error handling
         if custom_template:
             return server_error(request, template_name=custom_template)