diff --git a/awx/ui_next/src/screens/Template/JobTemplateDetail/JobTemplateDetail.jsx b/awx/ui_next/src/screens/Template/JobTemplateDetail/JobTemplateDetail.jsx index 44390be54d..94955e78f5 100644 --- a/awx/ui_next/src/screens/Template/JobTemplateDetail/JobTemplateDetail.jsx +++ b/awx/ui_next/src/screens/Template/JobTemplateDetail/JobTemplateDetail.jsx @@ -196,12 +196,7 @@ class JobTemplateDetail extends Component { ) : ( renderMissingDataDetail(i18n._(t`Project`)) )} - {template.scm_branch && ( - - )} + diff --git a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx index e7750e2a87..3299476322 100644 --- a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx +++ b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx @@ -161,6 +161,11 @@ describe('', () => { JobTemplatesAPI.readInstanceGroups.mockReturnValue({ data: { results: mockInstanceGroups }, }); + ProjectsAPI.readDetail.mockReturnValue({ + id: 1, + allow_override: true, + name: 'foo', + }); }); afterEach(() => { diff --git a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx index 74d5687f25..4d3242d2d0 100644 --- a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx +++ b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.jsx @@ -28,7 +28,7 @@ import { ProjectLookup, MultiCredentialsLookup, } from '@components/Lookup'; -import { JobTemplatesAPI } from '@api'; +import { JobTemplatesAPI, ProjectsAPI } from '@api'; import LabelSelect from './LabelSelect'; import PlaybookSelect from './PlaybookSelect'; @@ -81,16 +81,31 @@ class JobTemplateForm extends Component { this.loadRelatedInstanceGroups = this.loadRelatedInstanceGroups.bind(this); this.handleProjectUpdate = this.handleProjectUpdate.bind(this); this.setContentError = this.setContentError.bind(this); + this.fetchProject = this.fetchProject.bind(this); } componentDidMount() { const { validateField } = this.props; this.setState({ contentError: null, hasContentLoading: true }); // TODO: determine when LabelSelect has finished loading labels - Promise.all([this.loadRelatedInstanceGroups()]).then(() => { - this.setState({ hasContentLoading: false }); - validateField('project'); - }); + Promise.all([this.loadRelatedInstanceGroups(), this.fetchProject()]).then( + () => { + this.setState({ hasContentLoading: false }); + validateField('project'); + } + ); + } + + async fetchProject() { + const { project } = this.state; + if (project && project.id) { + try { + const { data } = await ProjectsAPI.readDetail(project.id); + this.setState({ project: data }); + } catch (err) { + this.setState({ contentError: err }); + } + } } async loadRelatedInstanceGroups() { diff --git a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx index 41d218c01a..7deb756399 100644 --- a/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx +++ b/awx/ui_next/src/screens/Template/shared/JobTemplateForm.test.jsx @@ -27,7 +27,6 @@ describe('', () => { project: { id: 3, name: 'qux', - allow_override: true, }, labels: { results: [{ name: 'Sushi', id: 1 }, { name: 'Major', id: 2 }] }, credentials: [ @@ -90,6 +89,11 @@ describe('', () => { ProjectsAPI.readPlaybooks.mockReturnValue({ data: ['debug.yml'], }); + ProjectsAPI.readDetail.mockReturnValue({ + name: 'foo', + id: 1, + allow_override: true, + }); }); afterEach(() => {