diff --git a/awx/api/serializers.py b/awx/api/serializers.py index 3ba2488a5b..f91ebad8f5 100644 --- a/awx/api/serializers.py +++ b/awx/api/serializers.py @@ -724,6 +724,19 @@ class UnifiedJobTemplateSerializer(BaseSerializer): else: return super(UnifiedJobTemplateSerializer, self).to_representation(obj) + def get_summary_fields(self, obj): + summary_fields = super().get_summary_fields(obj) + + if self.is_detail_view: + resolved_ee = obj.resolve_execution_environment() + summary_fields['resolved_environment'] = { + field: getattr(resolved_ee, field, None) + for field in SUMMARIZABLE_FK_FIELDS['execution_environment'] + if getattr(resolved_ee, field, None) is not None + } + + return summary_fields + class UnifiedJobSerializer(BaseSerializer): show_capabilities = ['start', 'delete'] diff --git a/awx/main/models/mixins.py b/awx/main/models/mixins.py index 760cce4e47..0f9d9154e1 100644 --- a/awx/main/models/mixins.py +++ b/awx/main/models/mixins.py @@ -477,11 +477,11 @@ class ExecutionEnvironmentMixin(models.Model): if wf_template.execution_environment is not None: return wf_template.execution_environment wf_node = getattr(wf_node.workflow_job, 'unified_job_node', None) - if getattr(self, 'project', None) and self.project.default_environment is not None: + if getattr(self, 'project_id', None) and self.project.default_environment is not None: return self.project.default_environment - if getattr(self, 'organization', None) and self.organization.default_environment is not None: + if getattr(self, 'organization_id', None) and self.organization.default_environment is not None: return self.organization.default_environment - if getattr(self, 'inventory', None) and self.inventory.organization is not None: + if getattr(self, 'inventory_id', None) and self.inventory.organization is not None: if self.inventory.organization.default_environment is not None: return self.inventory.organization.default_environment