mirror of
https://github.com/ansible/awx.git
synced 2026-03-11 22:49:32 -02:30
Add parser error handling for settings json
This commit is contained in:
@@ -304,6 +304,10 @@ export default [
|
|||||||
$scope[fld + '_api_error'] = '';
|
$scope[fld + '_api_error'] = '';
|
||||||
$('[name="' + fld + '"]').removeClass('ng-invalid');
|
$('[name="' + fld + '"]').removeClass('ng-invalid');
|
||||||
}
|
}
|
||||||
|
if (currentForm.fields[fld].codeMirror) {
|
||||||
|
$('label[for="' + fld + '"] span').removeClass('error-color');
|
||||||
|
$(`#cm-${fld}-container .CodeMirror`).removeClass('error-border');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!$scope.$$phase) {
|
if (!$scope.$$phase) {
|
||||||
$scope.$digest();
|
$scope.$digest();
|
||||||
@@ -316,6 +320,8 @@ export default [
|
|||||||
var getFormPayload = function() {
|
var getFormPayload = function() {
|
||||||
var keys = _.keys(formDefs[formTracker.getCurrent()].fields);
|
var keys = _.keys(formDefs[formTracker.getCurrent()].fields);
|
||||||
var payload = {};
|
var payload = {};
|
||||||
|
const errors = {};
|
||||||
|
|
||||||
_.each(keys, function(key) {
|
_.each(keys, function(key) {
|
||||||
if (key === 'ACCESS_TOKEN_EXPIRE_SECONDS' || key === 'REFRESH_TOKEN_EXPIRE_SECONDS' || key === 'AUTHORIZATION_CODE_EXPIRE_SECONDS') {
|
if (key === 'ACCESS_TOKEN_EXPIRE_SECONDS' || key === 'REFRESH_TOKEN_EXPIRE_SECONDS' || key === 'AUTHORIZATION_CODE_EXPIRE_SECONDS') {
|
||||||
// These two values need to be POSTed nested under the OAUTH2_PROVIDER key
|
// These two values need to be POSTed nested under the OAUTH2_PROVIDER key
|
||||||
@@ -350,7 +356,12 @@ export default [
|
|||||||
}
|
}
|
||||||
} else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) {
|
} else if($scope.configDataResolve[key].type === 'list' && $scope[key] !== null) {
|
||||||
// Parse lists
|
// Parse lists
|
||||||
payload[key] = SettingsUtils.listToArray($scope[key], key);
|
try {
|
||||||
|
payload[key] = SettingsUtils.listToArray($scope[key], key);
|
||||||
|
} catch (error) {
|
||||||
|
errors[key] = error;
|
||||||
|
payload[key] = [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if($scope.configDataResolve[key].type === 'nested object') {
|
else if($scope.configDataResolve[key].type === 'nested object') {
|
||||||
if(!$scope[key]) {
|
if(!$scope[key]) {
|
||||||
@@ -371,15 +382,22 @@ export default [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return payload;
|
return [payload, errors];
|
||||||
};
|
};
|
||||||
|
|
||||||
vm.formSave = function() {
|
vm.formSave = function() {
|
||||||
var saveDeferred = $q.defer();
|
var saveDeferred = $q.defer();
|
||||||
clearApiErrors();
|
clearApiErrors();
|
||||||
Wait('start');
|
Wait('start');
|
||||||
const payload = getFormPayload();
|
|
||||||
SettingsService.patchConfiguration(getFormPayload())
|
const [payload, errors] = getFormPayload();
|
||||||
|
if (!SettingsUtils.isEmpty(errors)) {
|
||||||
|
ProcessErrors($scope, errors, null, formDefs[formTracker.getCurrent()], {});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const [payloadCopy] = getFormPayload();
|
||||||
|
SettingsService.patchConfiguration(payloadCopy)
|
||||||
.then(function(data) {
|
.then(function(data) {
|
||||||
loginUpdate();
|
loginUpdate();
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,9 @@ export default ['$q',
|
|||||||
var payload;
|
var payload;
|
||||||
|
|
||||||
if (input.indexOf('[') !== -1) {
|
if (input.indexOf('[') !== -1) {
|
||||||
try {
|
payload = JSON.parse(input);
|
||||||
payload = JSON.parse(input);
|
|
||||||
|
|
||||||
if (!Array.isArray(payload)) {
|
if (!Array.isArray(payload)) {
|
||||||
payload = [];
|
|
||||||
}
|
|
||||||
} catch(err) {
|
|
||||||
payload = [];
|
payload = [];
|
||||||
}
|
}
|
||||||
} else if (input.indexOf('\n') !== -1) {
|
} else if (input.indexOf('\n') !== -1) {
|
||||||
|
|||||||
@@ -212,7 +212,11 @@ angular.module('Utilities', ['RestServices', 'Utilities'])
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (data[fld]) {
|
if (data[fld]) {
|
||||||
scope[fld + '_api_error'] = data[fld][0];
|
if (data[fld].message) {
|
||||||
|
scope[fld + '_api_error'] = data[fld].message;
|
||||||
|
} else {
|
||||||
|
scope[fld + '_api_error'] = data[fld][0];
|
||||||
|
}
|
||||||
$('[name="' + fld + '"]').addClass('ng-invalid');
|
$('[name="' + fld + '"]').addClass('ng-invalid');
|
||||||
$('label[for="' + fld + '"] span').addClass('error-color');
|
$('label[for="' + fld + '"] span').addClass('error-color');
|
||||||
$('html, body').animate({scrollTop: $('[name="' + fld + '"]').offset().top}, 0);
|
$('html, body').animate({scrollTop: $('[name="' + fld + '"]').offset().top}, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user