Hello,

This patch adds ability to convert users from preserved to staged state.

Fixes this ticket: https://fedorahosted.org/freeipa/ticket/5371

--
Pavel^3 Vomacka
>From ac0396b8644fe9cf421a491c35c7eed017dc5cca Mon Sep 17 00:00:00 2001
From: Pavel Vomacka <pvoma...@redhat.com>
Date: Wed, 13 Apr 2016 09:09:17 +0200
Subject: [PATCH] Add ability to convert users from preserved to staged state

Add 'stage' button to the page with list of preserved users and 'stage'
option into the actions dropdown menu on preserved user details page.
Stage action converts users from preserved state to staged state.

https://fedorahosted.org/freeipa/ticket/5371
---
 install/ui/ipa.css                  |  4 +++
 install/ui/src/freeipa/stageuser.js | 54 +++++++++++++++++++++++++++++++++++++
 install/ui/src/freeipa/user.js      | 20 ++++++++++++--
 install/ui/test/data/ipa_init.json  |  4 +++
 ipalib/plugins/internal.py          |  4 +++
 5 files changed, 84 insertions(+), 2 deletions(-)

diff --git a/install/ui/ipa.css b/install/ui/ipa.css
index f419eb224252aa03eaf4b25bb03435f4c9a6de9b..7997a71d76e1f8ed7811d68b53a5f12892c49eb4 100644
--- a/install/ui/ipa.css
+++ b/install/ui/ipa.css
@@ -174,6 +174,10 @@ div[name=settings].facet-group li a {
     float: right;
 }
 
+.facet-controls-right .fa.fa-user {
+    opacity: 0.5;
+}
+
 .control-buttons {
     display: inline-block;
 }
diff --git a/install/ui/src/freeipa/stageuser.js b/install/ui/src/freeipa/stageuser.js
index ca4e30025a14853a287e4a29478f80a843ab1c27..1ca692b6a34e0897c10188998a8ee64fb39aa237 100644
--- a/install/ui/src/freeipa/stageuser.js
+++ b/install/ui/src/freeipa/stageuser.js
@@ -291,6 +291,9 @@ stageuser.search_preserved_facet_spec = {
     actions: [
         {
             $type: 'batch_undel'
+        },
+        {
+            $type: 'batch_stage'
         }
     ],
     control_buttons: [
@@ -298,6 +301,11 @@ stageuser.search_preserved_facet_spec = {
             name: 'undel',
             label: '@i18n:buttons.restore',
             icon: 'fa-heart'
+        },
+        {
+            name: 'batch_stage',
+            label: '@i18n:buttons.stage',
+            icon: 'fa-user'
         }
     ],
     policies: [
@@ -316,6 +324,12 @@ mod_user.entity_spec.policies.push(
     {
         $factory: IPA.facet_update_policy,
         source_facet: 'search_preserved',
+        dest_entity: 'stageuser',
+        dest_facet: 'search'
+    },
+    {
+        $factory: IPA.facet_update_policy,
+        source_facet: 'search_preserved',
         dest_entity: 'user',
         dest_facet: 'search'
     },
@@ -358,6 +372,44 @@ stageuser.batch_undel_action = function(spec) {
     return IPA.batch_items_action(spec);
 };
 
+stageuser.batch_stage_action = function(spec) {
+
+    spec = spec || {};
+
+    spec.name = spec.name || 'batch_stage';
+    spec.method = spec.method || 'stage';
+    spec.needs_confirm = spec.needs_confirm === undefined ? true : spec.needs_confirm;
+    spec.enable_cond = spec.enable_cond || ['item-selected'];
+    spec.success_msg = spec.success_msg || '@i18n:objects.stageuser.stage_success';
+    spec.confirm_msg = spec.confirm_msg || '@i18n:objects.stageuser.stage_confirm';
+
+    return IPA.batch_items_action(spec);
+};
+
+stageuser.stage_action = function(spec) {
+
+    spec = spec || {};
+
+    spec.name = spec.name || 'stage';
+    spec.method = spec.method || 'stage';
+    spec.show_cond = spec.show_cond || ['preserved_user'];
+    spec.needs_confirm = spec.needs_confirm !== undefined ? spec.needs_confirm : true;
+    spec.confirm_msg = spec.confirm_msg || '@i18n:objects.stageuser.stage_one_confirm';
+    spec.label = spec.label || '@i18n:buttons.stage';
+
+    var that = IPA.object_action(spec);
+
+    that.on_success = function(facet, data, text_status, xhr) {
+
+        IPA.notify_success(data.result.summary);
+        facet.on_update.notify();
+        facet.redirect();
+    };
+
+    return that;
+};
+
+
 /**
  * Stage user entity specification object
  * @member stageuser
@@ -374,6 +426,8 @@ stageuser.register = function() {
     var f = reg.facet;
     a.register('batch_activate', stageuser.batch_activate_action);
     a.register('batch_undel', stageuser.batch_undel_action);
+    a.register('batch_stage', stageuser.batch_stage_action);
+    a.register('stage', stageuser.stage_action);
     e.register({type: 'stageuser', spec: stageuser.stageuser_spec});
     f.register_from_spec('user_search_preserved', stageuser.search_preserved_facet_spec);
 };
diff --git a/install/ui/src/freeipa/user.js b/install/ui/src/freeipa/user.js
index a9727f57d69e7126d87707f541786ffab4d0c999..a871dd509125bc64f51bad7fc5a04fff94eed9c6 100644
--- a/install/ui/src/freeipa/user.js
+++ b/install/ui/src/freeipa/user.js
@@ -61,7 +61,19 @@ return {
     name: 'user',
     policies: [
         IPA.search_facet_update_policy,
-        IPA.details_facet_update_policy
+        IPA.details_facet_update_policy,
+        {
+            $factory: IPA.facet_update_policy,
+            source_facet: 'details',
+            dest_entity: 'user',
+            dest_facet: 'search_preserved'
+        },
+        {
+            $factory: IPA.facet_update_policy,
+            source_facet: 'details',
+            dest_entity: 'stageuser',
+            dest_facet: 'search'
+        }
     ],
     facets: [
         {
@@ -329,6 +341,10 @@ return {
                     $type: 'enable',
                     hide_cond: ['preserved-user']
                 },
+                {
+                    $type: 'stage',
+                    show_cond: ['preserved-user']
+                },
                 'delete',
                 {
                     $type: 'reset_password',
@@ -355,7 +371,7 @@ return {
                 }
             ],
             header_actions: [
-                'reset_password', 'enable', 'disable', 'delete',
+                'reset_password', 'enable', 'disable', 'stage', 'delete',
                 'unlock', 'add_otptoken', 'automember_rebuild', 'request_cert'
             ],
             state: {
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 852b953736da0ccb8a7803259e2bd5d4c4108ab9..51f8fd1df540cae881ccb2869d9bbda85251f456 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -89,6 +89,7 @@
                         "save": "Save",
                         "set": "Set",
                         "show": "Show",
+                        "stage": "Stage",
                         "unapply": "Un-apply",
                         "update": "Update",
                         "view": "View"
@@ -540,6 +541,9 @@
                             "activate_success": "${count} user(s) activated",
                             "label": "Stage users",
                             "preserved_label": "Preserved users",
+                            "stage_confirm": "Are you sure you want to stage selected users?",
+                            "stage_success": "${count} users(s) staged",
+                            "stage_one_confirm": "Are you sure you want to stage ${object}?",
                             "undel_confirm": "Are you sure you want to restore selected users?",
                             "undel_success": "${count} user(s) restored",
                             "user_categories": "User categories",
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 7156d4f47004dd702d3896ca736cc1f42227a321..54a4efe5a24507c8ff26291dbb3575bf73f5f56a 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -232,6 +232,7 @@ class i18n_messages(Command):
             "save": _("Save"),
             "set": _("Set"),
             "show": _("Show"),
+            "stage": _("Stage"),
             "unapply": ("Un-apply"),
             "update": _("Update"),
             "view": _("View"),
@@ -686,6 +687,9 @@ class i18n_messages(Command):
                 "activate_success": _("${count} user(s) activated"),
                 "label": _("Stage users"),
                 "preserved_label": _("Preserved users"),
+                "stage_confirm": _("Are you sure you want to stage selected users?"),
+                "stage_success": _("${count} users(s) staged"),
+                "stage_one_confirm": _("Are you sure you want to stage ${object}?"),
                 "undel_confirm": _("Are you sure you want to restore selected users?"),
                 "undel_success": _("${count} user(s) restored"),
                 "user_categories": _("User categories"),
-- 
2.5.5

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to