From e9ce9621f2f7b5c65d465829104a0de921dd6c09 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Tue, 5 Dec 2017 16:19:59 -0500 Subject: [PATCH] implement model-based copy for inventories --- .../inventories-hosts/inventories/inventory.list.js | 9 +++++++++ .../inventories/list/inventory-list.controller.js | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/awx/ui/client/src/inventories-hosts/inventories/inventory.list.js b/awx/ui/client/src/inventories-hosts/inventories/inventory.list.js index f675fd57ff..a76589e299 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/inventory.list.js +++ b/awx/ui/client/src/inventories-hosts/inventories/inventory.list.js @@ -100,6 +100,15 @@ export default ['i18n', function(i18n) { dataPlacement: 'top', ngShow: '!inventory.pending_deletion && inventory.summary_fields.user_capabilities.edit' }, + copy: { + label: i18n._('Copy'), + ngClick: 'copyInventory(inventory)', + "class": 'btn-danger btn-xs', + awToolTip: i18n._('Copy inventory'), + dataPlacement: 'top', + // requires future api rbac changes + //ngShow: 'project.summary_fields.user_capabilities.copy' + }, view: { label: i18n._('View'), ngClick: 'editInventory(inventory)', diff --git a/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js b/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js index 0846a21561..7b22a22dba 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js +++ b/awx/ui/client/src/inventories-hosts/inventories/list/inventory-list.controller.js @@ -73,6 +73,18 @@ function InventoriesList($scope, inventory.linkToDetails = (inventory.kind && inventory.kind === 'smart') ? `inventories.editSmartInventory({smartinventory_id:${inventory.id}})` : `inventories.edit({inventory_id:${inventory.id}})`; } + $scope.copyInventory = inventory => { + Wait('start'); + new Inventory('get', inventory.id) + .then(model => model.copy()) + .then(copy => $scope.editInventory(copy)) + .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.editInventory = function (inventory) { if(inventory.kind && inventory.kind === 'smart') { $state.go('inventories.editSmartInventory', {smartinventory_id: inventory.id});