Feature #15201 » 15201_include_locked_members_in_assignee_users.patch
app/models/principal.rb | ||
---|---|---|
89 | 89 |
where("1=0") |
90 | 90 |
else |
91 | 91 |
ids = projects.map(&:id) |
92 |
active.where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids) |
|
92 |
# include active and locked users |
|
93 |
where(:status => [STATUS_LOCKED, STATUS_ACTIVE]). |
|
94 |
where("#{Principal.table_name}.id IN (SELECT DISTINCT user_id FROM #{Member.table_name} WHERE project_id IN (?))", ids) |
|
93 | 95 |
end |
94 | 96 |
} |
95 | 97 |
# Principals that are not members of projects |
app/models/query.rb | ||
---|---|---|
509 | 509 |
@principal ||= begin |
510 | 510 |
principals = [] |
511 | 511 |
if project |
512 |
principals += project.principals.visible
|
|
512 |
principals += Principal.member_of(project).visible
|
|
513 | 513 |
unless project.leaf? |
514 | 514 |
principals += Principal.member_of(project.descendants.visible).visible |
515 | 515 |
end |
test/unit/principal_test.rb | ||
---|---|---|
52 | 52 |
assert_equal expected.map(&:id).sort, Principal.visible(user).pluck(:id).sort |
53 | 53 |
end |
54 | 54 | |
55 |
def test_member_of_scope_should_return_the_union_of_all_members |
|
55 |
def test_member_of_scope_should_return_the_union_of_all_active_and_locked_members
|
|
56 | 56 |
projects = Project.find([1]) |
57 |
assert_equal [3, 2], Principal.member_of(projects).sort.map(&:id) |
|
57 |
assert_equal [3, 5, 2], Principal.member_of(projects).sort.map(&:id)
|
|
58 | 58 |
projects = Project.find([1, 2]) |
59 |
assert_equal [3, 2, 8, 11], Principal.member_of(projects).sort.map(&:id) |
|
59 |
assert_equal [3, 5, 2, 8, 11], Principal.member_of(projects).sort.map(&:id)
|
|
60 | 60 |
end |
61 | 61 | |
62 | 62 |
def test_member_of_scope_should_be_empty_for_no_projects |