diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 8feb128bb3..12e5e09fc8 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -756,7 +756,11 @@ class HostSerializer(BaseSerializerWithVariables): d['last_job']['job_template_name'] = obj.last_job.job_template.name except (KeyError, AttributeError): pass - d.update({'recent_jobs': [{'id': j.job.id, 'name': j.job.job_template.name, 'status': j.job.status, + if j.job.job_template is not None: + job_template_name = j.job.job_template.name + else: + job_template_name = "" + d.update({'recent_jobs': [{'id': j.job.id, 'name': job_template_name, 'status': j.job.status, 'finished': j.job.finished} for j in obj.job_host_summaries.all().order_by('-created')[:5]]}) return d diff --git a/awx/main/models/jobs.py b/awx/main/models/jobs.py index 1abb90ab7d..077141a05b 100644 --- a/awx/main/models/jobs.py +++ b/awx/main/models/jobs.py @@ -259,7 +259,7 @@ class Job(UnifiedJob, JobOptions): def is_blocked_by(self, obj): from awx.main.models import InventoryUpdate, ProjectUpdate if type(obj) == Job: - if obj.job_template == self.job_template: + if obj.job_template is not None and obj.job_template == self.job_template: if obj.launch_type == 'callback' and self.launch_type == 'callback': if obj.limit != self.limit: return False