From a4872577892217bd4202ac5859c3c5854c34b8ea Mon Sep 17 00:00:00 2001 From: Matthew Jones Date: Mon, 15 Dec 2014 11:10:39 -0500 Subject: [PATCH] Cascade remove inventory source links when a custom script is removed --- awx/api/views.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/awx/api/views.py b/awx/api/views.py index 18f6d9c37a..d7790a8530 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -909,6 +909,16 @@ class InventoryScriptDetail(RetrieveUpdateDestroyAPIView): model = CustomInventoryScript serializer_class = CustomInventoryScriptSerializer + def destroy(self, request, *args, **kwargs): + obj = self.get_object() + can_delete = request.user.can_access(self.model, 'delete', obj) + if not can_delete: + raise PermissionDenied("Cannot delete inventory script") + for inv_src in InventorySource.objects.filter(source_script=obj): + inv_src.source_script = None + inv_src.save() + return super(InventoryScriptDetail, self).destroy(request, *args, **kwargs) + class InventoryList(ListCreateAPIView): model = Inventory