瀏覽代碼

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
tags/4.0.0
Go MAEDA 6 年之前
父節點
當前提交
b4d3715dc0
共有 5 個檔案被更改,包括 65 行新增9 行删除
  1. 3
    1
      app/models/principal.rb
  2. 3
    3
      app/models/query.rb
  3. 2
    2
      app/models/user.rb
  4. 54
    0
      test/functional/queries_controller_test.rb
  5. 3
    3
      test/unit/principal_test.rb

+ 3
- 1
app/models/principal.rb 查看文件

@@ -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

+ 3
- 3
app/models/query.rb 查看文件

@@ -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


+ 2
- 2
app/models/user.rb 查看文件

@@ -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

+ 54
- 0
test/functional/queries_controller_test.rb 查看文件

@@ -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

+ 3
- 3
test/unit/principal_test.rb 查看文件

@@ -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…
取消
儲存