From e63716c0bbe166c600c1ea939dfa946b79baf802 Mon Sep 17 00:00:00 2001 From: Aaron Tan Date: Thu, 1 Dec 2016 11:04:06 -0500 Subject: [PATCH] Move performance boost to access.py. --- awx/api/generics.py | 5 +---- awx/api/serializers.py | 6 +++--- awx/main/access.py | 2 ++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/awx/api/generics.py b/awx/api/generics.py index 8f8d76e3e8..0c593925c0 100644 --- a/awx/api/generics.py +++ b/awx/api/generics.py @@ -241,10 +241,7 @@ class ListAPIView(generics.ListAPIView, GenericAPIView): # Base class for a read-only list view. def get_queryset(self): - qs = self.request.user.get_queryset(self.model) - if getattr(self.model, 'spawned_by_workflow', False): - qs = qs.select_related('unified_job_node__workflow_job') - return qs + return self.request.user.get_queryset(self.model) def paginate_queryset(self, queryset): page = super(ListAPIView, self).paginate_queryset(queryset) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 374efb869a..1cea607111 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -599,18 +599,18 @@ class UnifiedJobSerializer(BaseSerializer): elif isinstance(obj, AdHocCommand): res['stdout'] = reverse('api:ad_hoc_command_stdout', args=(obj.pk,)) if obj.workflow_job_id: - res['source_worklflow_job'] = reverse('api:workflow_job_detail', args=(obj.workflow_job_id,)) + res['source_workflow_job'] = reverse('api:workflow_job_detail', args=(obj.workflow_job_id,)) return res def get_summary_fields(self, obj): summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj) if obj.spawned_by_workflow: - summary_fields['source_worklflow_job'] = {} + summary_fields['source_workflow_job'] = {} summary_obj = obj.unified_job_node.workflow_job for field in SUMMARIZABLE_FK_FIELDS['job']: val = getattr(summary_obj, field, None) if val is not None: - summary_fields['source_worklflow_job'][field] = val + summary_fields['source_workflow_job'][field] = val return summary_fields diff --git a/awx/main/access.py b/awx/main/access.py index 9059b4c7d0..eb50fb244d 100644 --- a/awx/main/access.py +++ b/awx/main/access.py @@ -1847,6 +1847,8 @@ class UnifiedJobAccess(BaseAccess): qs = qs.prefetch_related( 'unified_job_template', ) + if self.model.spawned_by_workflow: + qs = qs.select_related('unified_job_node__workflow_job') # WISH - sure would be nice if the following worked, but it does not. # In the future, as django and polymorphic libs are upgraded, try again.