From f47f8abe42dda4b6b3962c443d12568474d3ae28 Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Mon, 5 Dec 2016 13:29:59 -0500 Subject: [PATCH 1/2] finished fixing job through workflow node related to #4182 --- awx/api/serializers.py | 6 +++++- awx/main/models/unified_jobs.py | 11 +++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 9210f6abe9..01ab3c6fac 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -607,7 +607,11 @@ class UnifiedJobSerializer(BaseSerializer): summary_fields = super(UnifiedJobSerializer, self).get_summary_fields(obj) if obj.spawned_by_workflow: summary_fields['source_workflow_job'] = {} - summary_obj = obj.unified_job_node.workflow_job + try: + summary_obj = obj.unified_job_node.workflow_job + except ObjectDoesNotExist: + return summary_fields + for field in SUMMARIZABLE_FK_FIELDS['job']: val = getattr(summary_obj, field, None) if val is not None: diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 63c3e3196a..712bb73530 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -20,6 +20,7 @@ from django.utils.translation import ugettext_lazy as _ from django.utils.timezone import now from django.utils.encoding import smart_text from django.apps import apps +from django.core.exceptions import ObjectDoesNotExist # Django-Polymorphic from polymorphic import PolymorphicModel @@ -780,13 +781,19 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique @property def workflow_job_id(self): if self.spawned_by_workflow: - return self.unified_job_node.workflow_job.pk + try: + return self.unified_job_node.workflow_job.pk + except ObjectDoesNotExist: + pass return None @property def workflow_node_id(self): if self.spawned_by_workflow: - return self.unified_job_node.pk + try: + return self.unified_job_node.pk + except ObjectDoesNotExist: + pass return None @property From a5b1c7b57994c1c98be2f07a6489cdf135166d5d Mon Sep 17 00:00:00 2001 From: Chris Meyers Date: Mon, 5 Dec 2016 13:54:33 -0500 Subject: [PATCH 2/2] use more precise exception --- awx/api/serializers.py | 2 +- awx/main/models/unified_jobs.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 01ab3c6fac..2f98fc6053 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -609,7 +609,7 @@ class UnifiedJobSerializer(BaseSerializer): summary_fields['source_workflow_job'] = {} try: summary_obj = obj.unified_job_node.workflow_job - except ObjectDoesNotExist: + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: return summary_fields for field in SUMMARIZABLE_FK_FIELDS['job']: diff --git a/awx/main/models/unified_jobs.py b/awx/main/models/unified_jobs.py index 712bb73530..31afe69d32 100644 --- a/awx/main/models/unified_jobs.py +++ b/awx/main/models/unified_jobs.py @@ -20,7 +20,6 @@ from django.utils.translation import ugettext_lazy as _ from django.utils.timezone import now from django.utils.encoding import smart_text from django.apps import apps -from django.core.exceptions import ObjectDoesNotExist # Django-Polymorphic from polymorphic import PolymorphicModel @@ -783,7 +782,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique if self.spawned_by_workflow: try: return self.unified_job_node.workflow_job.pk - except ObjectDoesNotExist: + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: pass return None @@ -792,7 +791,7 @@ class UnifiedJob(PolymorphicModel, PasswordFieldsModel, CommonModelNameNotUnique if self.spawned_by_workflow: try: return self.unified_job_node.pk - except ObjectDoesNotExist: + except UnifiedJob.unified_job_node.RelatedObjectDoesNotExist: pass return None