mirror of
https://github.com/ansible/awx.git
synced 2026-05-15 05:17:36 -02:30
Cancel any running or pending actions when one of the unified job types
is deleted/marked inactive
This commit is contained in:
@@ -570,6 +570,15 @@ class ProjectDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
model = Project
|
model = Project
|
||||||
serializer_class = ProjectSerializer
|
serializer_class = ProjectSerializer
|
||||||
|
|
||||||
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
obj = Project.objects.get(pk=kwargs['pk'])
|
||||||
|
can_delete = request.user.can_access(Project, 'delete', obj)
|
||||||
|
if not can_delete:
|
||||||
|
raise PermissionDenied("Cannot delete project")
|
||||||
|
for pu in obj.project_updates.filter(status__in=['pending', 'waiting', 'running']):
|
||||||
|
pu.cancel()
|
||||||
|
return super(ProjectDetail, self).destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
class ProjectPlaybooks(RetrieveAPIView):
|
class ProjectPlaybooks(RetrieveAPIView):
|
||||||
|
|
||||||
model = Project
|
model = Project
|
||||||
@@ -1244,6 +1253,15 @@ class InventorySourceDetail(RetrieveUpdateAPIView):
|
|||||||
serializer_class = InventorySourceSerializer
|
serializer_class = InventorySourceSerializer
|
||||||
new_in_14 = True
|
new_in_14 = True
|
||||||
|
|
||||||
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
obj = InventorySource.objects.get(pk=kwargs['pk'])
|
||||||
|
can_delete = request.user.can_access(InventorySource, 'delete', obj)
|
||||||
|
if not can_delete:
|
||||||
|
raise PermissionDenied("Cannot delete inventory source")
|
||||||
|
for pu in obj.inventory_updates.filter(status__in=['pending', 'waiting', 'running']):
|
||||||
|
pu.cancel()
|
||||||
|
return super(InventorySourceDetail, self).destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
class InventorySourceSchedulesList(SubListCreateAPIView):
|
class InventorySourceSchedulesList(SubListCreateAPIView):
|
||||||
|
|
||||||
view_name = "Inventory Source Schedules"
|
view_name = "Inventory Source Schedules"
|
||||||
@@ -1349,6 +1367,16 @@ class JobTemplateDetail(RetrieveUpdateDestroyAPIView):
|
|||||||
model = JobTemplate
|
model = JobTemplate
|
||||||
serializer_class = JobTemplateSerializer
|
serializer_class = JobTemplateSerializer
|
||||||
|
|
||||||
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
obj = JobTemplate.objects.get(pk=kwargs['pk'])
|
||||||
|
can_delete = request.user.can_access(JobTemplate, 'delete', obj)
|
||||||
|
if not can_delete:
|
||||||
|
raise PermissionDenied("Cannot delete job template")
|
||||||
|
for pu in obj.jobs.filter(status__in=['pending', 'waiting', 'running']):
|
||||||
|
pu.cancel()
|
||||||
|
return super(JobTemplateDetail, self).destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class JobTemplateLaunch(GenericAPIView):
|
class JobTemplateLaunch(GenericAPIView):
|
||||||
|
|
||||||
model = JobTemplate
|
model = JobTemplate
|
||||||
|
|||||||
Reference in New Issue
Block a user