From 43cce83ba111a1bde37374c87cb63b72d0ec61fc Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Wed, 26 Feb 2020 12:44:20 -0500 Subject: [PATCH 1/3] Handle api error 'detail' key as generic form error --- awx/ui_next/src/components/FormField/FormSubmitError.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/awx/ui_next/src/components/FormField/FormSubmitError.jsx b/awx/ui_next/src/components/FormField/FormSubmitError.jsx index 6dd5db1c32..65621cf581 100644 --- a/awx/ui_next/src/components/FormField/FormSubmitError.jsx +++ b/awx/ui_next/src/components/FormField/FormSubmitError.jsx @@ -15,6 +15,8 @@ function FormSubmitError({ error }) { setErrors(errorMessages); if (errorMessages.__all__) { setErrorMessage(errorMessages.__all__); + } else if (errorMessages.detail) { + setErrorMessage(errorMessages.detail); } else { setErrorMessage(null); } From bd30951a4f7bc436924c6e0f9be426b371c51cfe Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Wed, 26 Feb 2020 13:19:21 -0500 Subject: [PATCH 2/3] Pass empty array instead of null to rbac list The DataListToolbar component expects an array for additional controls in all cases. When there's no controls to pass into the toolbar, provide an empty array to avoid type-related errors. --- .../src/components/ResourceAccessList/ResourceAccessList.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/ui_next/src/components/ResourceAccessList/ResourceAccessList.jsx b/awx/ui_next/src/components/ResourceAccessList/ResourceAccessList.jsx index e321a14b2b..6ba012bc9b 100644 --- a/awx/ui_next/src/components/ResourceAccessList/ResourceAccessList.jsx +++ b/awx/ui_next/src/components/ResourceAccessList/ResourceAccessList.jsx @@ -203,7 +203,7 @@ class ResourceAccessList extends React.Component { onClick={this.handleAddOpen} />, ] - : null + : [] } /> )} From 6536f5a453c20e0ecbecf2d544e27e0c162ecc20 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Wed, 26 Feb 2020 13:40:26 -0500 Subject: [PATCH 3/3] Delete falsey project creds before POST|PATCH Depending on the permissions of the user submitting the form, the API might throw an unexpected error if our creation request has a zero-length string as its credential field. As a work-around, normalize falsey credential fields by deleting them. --- awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx | 7 +++++++ .../src/screens/Project/ProjectEdit/ProjectEdit.jsx | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx index 300627247d..f8a1950490 100644 --- a/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx +++ b/awx/ui_next/src/screens/Project/ProjectAdd/ProjectAdd.jsx @@ -13,6 +13,13 @@ function ProjectAdd() { if (values.scm_type === 'manual') { values.scm_type = ''; } + if (!values.credential) { + // Depending on the permissions of the user submitting the form, + // the API might throw an unexpected error if our creation request + // has a zero-length string as its credential field. As a work-around, + // normalize falsey credential fields by deleting them. + delete values.credential; + } setFormSubmitError(null); try { const { diff --git a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx index bde5500cb6..94fcaf3edc 100644 --- a/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx +++ b/awx/ui_next/src/screens/Project/ProjectEdit/ProjectEdit.jsx @@ -13,6 +13,13 @@ function ProjectEdit({ project }) { if (values.scm_type === 'manual') { values.scm_type = ''; } + if (!values.credential) { + // Depending on the permissions of the user submitting the form, + // the API might throw an unexpected error if our creation request + // has a zero-length string as its credential field. As a work-around, + // normalize falsey credential fields by deleting them. + delete values.credential; + } try { const { data: { id },