From 50d95ddc3f042ef5d6209c0c3121581dafa52fc4 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Tue, 5 Dec 2017 17:38:41 -0500 Subject: [PATCH] implement model-based credential copy --- awx/ui/client/src/credentials/credentials.list.js | 10 +++++++++- .../list/credentials-list.controller.js | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/awx/ui/client/src/credentials/credentials.list.js b/awx/ui/client/src/credentials/credentials.list.js index 36f87541a7..edd30261a6 100644 --- a/awx/ui/client/src/credentials/credentials.list.js +++ b/awx/ui/client/src/credentials/credentials.list.js @@ -69,7 +69,15 @@ export default ['i18n', function(i18n) { dataPlacement: 'top', ngShow: 'credential.summary_fields.user_capabilities.edit' }, - + copy: { + label: i18n._('Copy'), + ngClick: 'copyCredential(credential)', + "class": 'btn-danger btn-xs', + awToolTip: i18n._('Copy credential'), + dataPlacement: 'top', + // requires future api rbac changes + //ngShow: 'credential.summary_fields.user_capabilities.copy' + }, view: { ngClick: "editCredential(credential.id)", label: i18n._('View'), diff --git a/awx/ui/client/src/credentials/list/credentials-list.controller.js b/awx/ui/client/src/credentials/list/credentials-list.controller.js index 6222f37000..2e8c6e87e8 100644 --- a/awx/ui/client/src/credentials/list/credentials-list.controller.js +++ b/awx/ui/client/src/credentials/list/credentials-list.controller.js @@ -89,6 +89,21 @@ export default ['$scope', 'Rest', 'CredentialList', 'Prompt', 'ProcessErrors', ' } } + $scope.copyCredential = credential => { + Wait('start'); + new Credential('get', credential.id) + .then(model => model.copy()) + .then(({ id }) => { + const params = { credential_id: id }; + $state.go('credentials.edit', params, { reload: true }); + }) + .catch(({ data, status }) => { + const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` }; + ProcessErrors($scope, data, status, null, params); + }) + .finally(() => Wait('stop')); + }; + $scope.addCredential = function() { $state.go('credentials.add'); };