From 62e0291f863146ad471fea06b7e2c292ab317778 Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Fri, 28 Oct 2016 15:03:17 -0400 Subject: [PATCH] Integrate unnecessary queries for better performance. --- awx/api/views.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/awx/api/views.py b/awx/api/views.py index 154df98306..b1912021eb 100644 --- a/awx/api/views.py +++ b/awx/api/views.py @@ -1090,9 +1090,8 @@ class ProjectUpdateDetail(RetrieveDestroyAPIView): def destroy(self, request, *args, **kwargs): obj = self.get_object() - for unified_job_node in obj.unified_job_nodes.all(): - if unified_job_node.workflow_job.status in ACTIVE_STATES: - raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') + if obj.unified_job_nodes.filter(workflow_job__status__in=ACTIVE_STATES).exists(): + raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') return super(ProjectUpdateDetail, self).destroy(request, *args, **kwargs) class ProjectUpdateCancel(RetrieveAPIView): @@ -2176,9 +2175,8 @@ class InventoryUpdateDetail(RetrieveDestroyAPIView): def destroy(self, request, *args, **kwargs): obj = self.get_object() - for unified_job_node in obj.unified_job_nodes.all(): - if unified_job_node.workflow_job.status in ACTIVE_STATES: - raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') + if obj.unified_job_nodes.filter(workflow_job__status__in=ACTIVE_STATES).exists(): + raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') return super(InventoryUpdateDetail, self).destroy(request, *args, **kwargs) class InventoryUpdateCancel(RetrieveAPIView): @@ -2886,9 +2884,8 @@ class JobDetail(RetrieveUpdateDestroyAPIView): def destroy(self, request, *args, **kwargs): obj = self.get_object() - for unified_job_node in obj.unified_job_nodes.all(): - if unified_job_node.workflow_job.status in ACTIVE_STATES: - raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') + if obj.unified_job_nodes.filter(workflow_job__status__in=ACTIVE_STATES).exists(): + raise PermissionDenied(detail='Can not delete job resource when associated workflow job is running.') return super(JobDetail, self).destroy(request, *args, **kwargs) class JobLabelList(SubListAPIView):