]> source.dussan.org Git - redmine.git/commitdiff
Fixed: list of users for adding to a group may be empty if 100 first users have been...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 16:47:30 +0000 (16:47 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 1 Apr 2011 16:47:30 +0000 (16:47 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5284 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/groups_controller.rb
app/models/user.rb
app/views/groups/_users.html.erb
test/functional/groups_controller_test.rb

index 29e4e4b07d7103fe767967417795a36ae48f450a..db56eff96aa731dc27146d01f3d652f5a7719c6e 100644 (file)
@@ -132,7 +132,7 @@ class GroupsController < ApplicationController
   
   def autocomplete_for_user
     @group = Group.find(params[:id])
-    @users = User.active.like(params[:q]).find(:all, :limit => 100) - @group.users
+    @users = User.active.not_in_group(@group).like(params[:q]).all(:limit => 100)
     render :layout => false
   end
   
index a5ec74a35b3165fbec96fb7a20443cf9a9ec1f72..1018c33e0d134ee87d9dfb94f45f7c58ab353548 100644 (file)
@@ -80,6 +80,10 @@ class User < Principal
     group_id = group.is_a?(Group) ? group.id : group.to_i
     { :conditions => ["#{User.table_name}.id IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] }
   }
+  named_scope :not_in_group, lambda {|group|
+    group_id = group.is_a?(Group) ? group.id : group.to_i
+    { :conditions => ["#{User.table_name}.id NOT IN (SELECT gu.user_id FROM #{table_name_prefix}groups_users#{table_name_suffix} gu WHERE gu.group_id = ?)", group_id] }
+  }
   
   def before_create
     self.mail_notification = Setting.default_notification_option if self.mail_notification.blank?
index 580851d5a6c5ab3b6382b101e538147b28167930..d7c462e1b8fbbd2a0bb617bf39b7b249d9d00538 100644 (file)
@@ -24,7 +24,7 @@
 </div>
 
 <div class="splitcontentright">
-<% users = User.active.find(:all, :limit => 100) - @group.users %>
+<% users = User.active.not_in_group(@group).all(:limit => 100) %>
 <% if users.any? %>
   <% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %>
     <fieldset><legend><%=l(:label_user_new)%></legend>
index a1a164b0747d8033286476b7744b65c818db5c2e..f45dfc456d4739c6a03edff9666a0fe4b1f66117 100644 (file)
@@ -104,4 +104,13 @@ class GroupsControllerTest < ActionController::TestCase
       post :destroy_membership, :id => 10, :membership_id => 6
     end
   end
+  
+  def test_autocomplete_for_user
+    get :autocomplete_for_user, :id => 10, :q => 'mis'
+    assert_response :success
+    users = assigns(:users)
+    assert_not_nil users
+    assert users.any?
+    assert !users.include?(Group.find(10).users.first)
+  end
 end