Move performance boost to access.py.

This commit is contained in:
Aaron Tan
2016-12-01 11:04:06 -05:00
parent 908b140d28
commit e63716c0bb
3 changed files with 6 additions and 7 deletions

View File

@@ -241,10 +241,7 @@ class ListAPIView(generics.ListAPIView, GenericAPIView):
# Base class for a read-only list view. # Base class for a read-only list view.
def get_queryset(self): def get_queryset(self):
qs = self.request.user.get_queryset(self.model) return 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
def paginate_queryset(self, queryset): def paginate_queryset(self, queryset):
page = super(ListAPIView, self).paginate_queryset(queryset) page = super(ListAPIView, self).paginate_queryset(queryset)

View File

@@ -599,18 +599,18 @@ class UnifiedJobSerializer(BaseSerializer):
elif isinstance(obj, AdHocCommand): elif isinstance(obj, AdHocCommand):
res['stdout'] = reverse('api:ad_hoc_command_stdout', args=(obj.pk,)) res['stdout'] = reverse('api:ad_hoc_command_stdout', args=(obj.pk,))
if obj.workflow_job_id: 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 return res
def get_summary_fields(self, obj): def get_summary_fields(self, obj):
summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj) summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj)
if obj.spawned_by_workflow: if obj.spawned_by_workflow:
summary_fields['source_worklflow_job'] = {} summary_fields['source_workflow_job'] = {}
summary_obj = obj.unified_job_node.workflow_job summary_obj = obj.unified_job_node.workflow_job
for field in SUMMARIZABLE_FK_FIELDS['job']: for field in SUMMARIZABLE_FK_FIELDS['job']:
val = getattr(summary_obj, field, None) val = getattr(summary_obj, field, None)
if val is not None: if val is not None:
summary_fields['source_worklflow_job'][field] = val summary_fields['source_workflow_job'][field] = val
return summary_fields return summary_fields

View File

@@ -1847,6 +1847,8 @@ class UnifiedJobAccess(BaseAccess):
qs = qs.prefetch_related( qs = qs.prefetch_related(
'unified_job_template', '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. # 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. # In the future, as django and polymorphic libs are upgraded, try again.