mirror of
https://github.com/meineerde/redmine.git
synced 2026-01-05 07:01:30 +00:00
Include locked members in filters (#15201).
Patch by Marius BALTEANU. git-svn-id: http://svn.redmine.org/redmine/trunk@17371 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
bff0fbce8b
commit
b4d3715dc0
@ -94,7 +94,9 @@ class Principal < ActiveRecord::Base
|
||||
where("1=0")
|
||||
else
|
||||
ids = projects.map(&:id)
|
||||
active.where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids)
|
||||
# include active and locked users
|
||||
where(:status => [STATUS_LOCKED, STATUS_ACTIVE]).
|
||||
where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids)
|
||||
end
|
||||
}
|
||||
# Principals that are not members of projects
|
||||
|
||||
@ -512,7 +512,7 @@ class Query < ActiveRecord::Base
|
||||
@principal ||= begin
|
||||
principals = []
|
||||
if project
|
||||
principals += project.principals.visible
|
||||
principals += Principal.member_of(project).visible
|
||||
unless project.leaf?
|
||||
principals += Principal.member_of(project.descendants.visible).visible
|
||||
end
|
||||
@ -533,14 +533,14 @@ class Query < ActiveRecord::Base
|
||||
def author_values
|
||||
author_values = []
|
||||
author_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
|
||||
author_values += users.collect{|s| [s.name, s.id.to_s] }
|
||||
author_values += users.sort_by(&:status).collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")] }
|
||||
author_values
|
||||
end
|
||||
|
||||
def assigned_to_values
|
||||
assigned_to_values = []
|
||||
assigned_to_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged?
|
||||
assigned_to_values += (Setting.issue_group_assignment? ? principals : users).collect{|s| [s.name, s.id.to_s] }
|
||||
assigned_to_values += (Setting.issue_group_assignment? ? principals : users).sort_by(&:status).collect{|s| [s.name, s.id.to_s, l("status_#{User::LABEL_BY_STATUS[s.status]}")] }
|
||||
assigned_to_values
|
||||
end
|
||||
|
||||
|
||||
@ -514,7 +514,7 @@ class User < Principal
|
||||
name
|
||||
end
|
||||
|
||||
CSS_CLASS_BY_STATUS = {
|
||||
LABEL_BY_STATUS = {
|
||||
STATUS_ANONYMOUS => 'anon',
|
||||
STATUS_ACTIVE => 'active',
|
||||
STATUS_REGISTERED => 'registered',
|
||||
@ -522,7 +522,7 @@ class User < Principal
|
||||
}
|
||||
|
||||
def css_classes
|
||||
"user #{CSS_CLASS_BY_STATUS[status]}"
|
||||
"user #{LABEL_BY_STATUS[status]}"
|
||||
end
|
||||
|
||||
# Returns the current day according to user's time zone
|
||||
|
||||
@ -621,4 +621,58 @@ class QueriesControllerTest < Redmine::ControllerTest
|
||||
assert_equal 4, json.count
|
||||
assert_include ["Private child of eCookbook","5"], json
|
||||
end
|
||||
|
||||
def test_assignee_filter_should_return_active_and_locked_users_grouped_by_status
|
||||
@request.session[:user_id] = 1
|
||||
get :filter, :params => {
|
||||
:project_id => 1,
|
||||
:type => 'IssueQuery',
|
||||
:name => 'assigned_to_id'
|
||||
}
|
||||
assert_response :success
|
||||
assert_equal 'application/json', response.content_type
|
||||
json = ActiveSupport::JSON.decode(response.body)
|
||||
|
||||
assert_equal 6, json.count
|
||||
# "me" value should not be grouped
|
||||
assert_include ["<< me >>", "me"], json
|
||||
assert_include ["Dave Lopper", "3", "active"], json
|
||||
assert_include ["Dave2 Lopper2", "5", "locked"], json
|
||||
end
|
||||
|
||||
def test_author_filter_should_return_active_and_locked_users_grouped_by_status
|
||||
@request.session[:user_id] = 1
|
||||
get :filter, :params => {
|
||||
:project_id => 1,
|
||||
:type => 'IssueQuery',
|
||||
:name => 'author_id'
|
||||
}
|
||||
assert_response :success
|
||||
assert_equal 'application/json', response.content_type
|
||||
json = ActiveSupport::JSON.decode(response.body)
|
||||
|
||||
assert_equal 6, json.count
|
||||
# "me" value should not be grouped
|
||||
assert_include ["<< me >>", "me"], json
|
||||
assert_include ["Dave Lopper", "3", "active"], json
|
||||
assert_include ["Dave2 Lopper2", "5", "locked"], json
|
||||
end
|
||||
|
||||
def test_user_filter_should_return_active_and_locked_users_grouped_by_status
|
||||
@request.session[:user_id] = 1
|
||||
get :filter, :params => {
|
||||
:project_id => 1,
|
||||
:type => 'TimeEntryQuery',
|
||||
:name => 'user_id'
|
||||
}
|
||||
assert_response :success
|
||||
assert_equal 'application/json', response.content_type
|
||||
json = ActiveSupport::JSON.decode(response.body)
|
||||
|
||||
assert_equal 6, json.count
|
||||
# "me" value should not be grouped
|
||||
assert_include ["<< me >>", "me"], json
|
||||
assert_include ["Dave Lopper", "3", "active"], json
|
||||
assert_include ["Dave2 Lopper2", "5", "locked"], json
|
||||
end
|
||||
end
|
||||
|
||||
@ -52,11 +52,11 @@ class PrincipalTest < ActiveSupport::TestCase
|
||||
assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort
|
||||
end
|
||||
|
||||
def test_member_of_scope_should_return_the_union_of_all_members
|
||||
def test_member_of_scope_should_return_the_union_of_all_active_and_locked_members
|
||||
projects = Project.find([1])
|
||||
assert_equal [3, 2], Principal.member_of(projects).sort.map(&:id)
|
||||
assert_equal [3, 5, 2], Principal.member_of(projects).sort.map(&:id)
|
||||
projects = Project.find([1, 2])
|
||||
assert_equal [3, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
|
||||
assert_equal [3, 5, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
|
||||
end
|
||||
|
||||
def test_member_of_scope_should_be_empty_for_no_projects
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user