Feature #11069 » patch_for_locked_users_query.diff
app/models/principal.rb (working copy) | ||
---|---|---|
60 | 60 |
active.uniq.joins(:members).where("#{Member.table_name}.project_id IN (?)", ids) |
61 | 61 |
end |
62 | 62 |
} |
63 |
# Principals that are locked members of a collection of projects |
|
64 |
scope :locked_member_of, lambda {|projects| |
|
65 |
projects = [projects] unless project.is_a?(Array) |
|
66 |
if projects.empty? |
|
67 |
where("1=0") |
|
68 |
else |
|
69 |
ids = projects.map(&:id) |
|
70 |
locked.uniq.joins(:members).where("#{Member.table_name}.project_id IN (?)", ids) |
|
71 |
end |
|
72 |
} |
|
63 | 73 |
# Principals that are not members of projects |
64 | 74 |
scope :not_member_of, lambda {|projects| |
65 | 75 |
projects = [projects] unless projects.is_a?(Array) |
app/models/issue_query.rb (working copy) | ||
---|---|---|
70 | 70 |
issue_custom_fields = [] |
71 | 71 |
|
72 | 72 |
if project |
73 |
principals += project.principals.sort |
|
73 |
principals += project.principals |
|
74 |
principals += project.locked_principals |
|
75 |
principals.sort |
|
74 | 76 |
unless project.leaf? |
75 | 77 |
subprojects = project.descendants.visible.all |
76 | 78 |
principals += Principal.member_of(subprojects) |
79 |
principals += Principal.locked_member_of(subprojects) |
|
77 | 80 |
end |
78 | 81 |
versions = project.shared_versions.all |
79 | 82 |
categories = project.issue_categories.all |
... | ... | |
82 | 85 |
else |
83 | 86 |
if all_projects.any? |
84 | 87 |
principals += Principal.member_of(all_projects) |
88 |
principals += Principal.locked_member_of(all_projects) |
|
85 | 89 |
end |
86 | 90 |
versions = Version.visible.find_all_by_sharing('system') |
87 | 91 |
issue_custom_fields = IssueCustomField.where(:is_filter => true, :is_for_all => true).all |
app/models/project.rb (working copy) | ||
---|---|---|
33 | 33 |
has_many :member_principals, :class_name => 'Member', |
34 | 34 |
:include => :principal, |
35 | 35 |
:conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE})" |
36 |
has_many :locked_member_principals, :class_name => 'Member', |
|
37 |
:include => :principal, |
|
38 |
:conditions => "#{Principal.table_name}.type='Group' OR (#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_LOCKED})" |
|
36 | 39 |
has_many :users, :through => :members |
37 | 40 |
has_many :principals, :through => :member_principals, :source => :principal |
41 |
has_many :locked_principals, :through => :locked_member_principals, :source => :principal |
|
38 | 42 | |
39 | 43 |
has_many :enabled_modules, :dependent => :delete_all |
40 | 44 |
has_and_belongs_to_many :trackers, :order => "#{Tracker.table_name}.position" |