6254: slight performance improvement where the can_login link is not retrieved and...
authorradhika <radhika@curoverse.com>
Fri, 12 Jun 2015 15:02:13 +0000 (11:02 -0400)
committerradhika <radhika@curoverse.com>
Fri, 12 Jun 2015 15:02:13 +0000 (11:02 -0400)
apps/workbench/app/controllers/users_controller.rb
apps/workbench/app/views/users/_setup_popup.html.erb

index d657f926039e1b2dbd8130456242e909e617e16d..c8c0016ffd1466bcf2fd0a76a9202ae04a069675 100644 (file)
@@ -214,14 +214,15 @@ class UsersController < ApplicationController
         if User.setup setup_params
           if params[:groups]
             new_groups = params[:groups].split(',').map(&:strip).compact.select{|i| !i.to_s.empty?}
-            can_login_perms = Link.where(tail_uuid: params[:user_email],
-                                         head_kind: 'arvados#user',
-                                         link_class: 'permission',
-                                         name: 'can_login')
-            if can_login_perms.any?
-              perm = can_login_perms.first
-              props = perm.properties
-              if new_groups != props[:groups]
+            prev_groups = params[:prev_groups].split(',').map(&:strip).compact.select{|i| !i.to_s.empty?}
+            if new_groups != prev_groups
+              can_login_perms = Link.where(tail_uuid: params[:user_email],
+                                           head_kind: 'arvados#user',
+                                           link_class: 'permission',
+                                           name: 'can_login')
+              if can_login_perms.any?
+                perm = can_login_perms.first
+                props = perm.properties
                 props[:groups] = new_groups
                 perm.save!
               end
@@ -354,6 +355,7 @@ class UsersController < ApplicationController
       perm_properties = can_login_perms.first.properties
       current_selections[:identity_url_prefix] = perm_properties[:identity_url_prefix]
       current_selections[:groups] = perm_properties[:groups].andand.join(', ')
+@current_groups = current_selections[:groups]
     end
 
     # repo perm
index fcc3322cb9abf7acca28cb973a4f9dd018b7651d..705d2d793b50c78787f81a711449fcbb64e82b0a 100644 (file)
@@ -65,6 +65,7 @@
       <div class="groups-group">
         <label for="groups">Groups</label>
         <input user_email="user_email" maxlength="250" name="user_email" type="hidden" value="<%=email%>">
+        <input prev_groups="prev_groups" maxlength="250" name="prev_groups" type="hidden" value="<%=groups%>">
         <input class="form-control" id="groups" maxlength="250" name="groups" type="text" value="<%=groups%>"
           title="Comma separated list of groups to which this user belongs">
       </div>