diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-04-01 16:47:30 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-04-01 16:47:30 +0000 |
commit | b972b5a647cae4cef4dfeb9686cb529705886107 (patch) | |
tree | 7ed1e980c1183c6e6c254f383d5e358556eba18e | |
parent | 4e7835c68c7dc6e1011f6513971f5561fcfd172d (diff) | |
download | redmine-b972b5a647cae4cef4dfeb9686cb529705886107.tar.gz redmine-b972b5a647cae4cef4dfeb9686cb529705886107.zip |
Fixed: list of users for adding to a group may be empty if 100 first users have been added (#8029).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5284 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/groups_controller.rb | 2 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/views/groups/_users.html.erb | 2 | ||||
-rw-r--r-- | test/functional/groups_controller_test.rb | 9 |
4 files changed, 15 insertions, 2 deletions
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index 29e4e4b07..db56eff96 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index a5ec74a35..1018c33e0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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? diff --git a/app/views/groups/_users.html.erb b/app/views/groups/_users.html.erb index 580851d5a..d7c462e1b 100644 --- a/app/views/groups/_users.html.erb +++ b/app/views/groups/_users.html.erb @@ -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> diff --git a/test/functional/groups_controller_test.rb b/test/functional/groups_controller_test.rb index a1a164b07..f45dfc456 100644 --- a/test/functional/groups_controller_test.rb +++ b/test/functional/groups_controller_test.rb @@ -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 |