Patch #39837 ยป optimize-query-models.patch
app/models/group.rb | ||
---|---|---|
47 | 47 |
'custom_fields', |
48 | 48 |
:if => lambda {|group, user| user.admin? && !group.builtin?}) |
49 | 49 | |
50 |
alias_attribute :name, :lastname |
|
51 | ||
50 | 52 |
def to_s |
51 | 53 |
name.to_s |
52 | 54 |
end |
53 | 55 | |
54 |
def name |
|
55 |
lastname |
|
56 |
end |
|
57 | ||
58 |
def name=(arg) |
|
59 |
self.lastname = arg |
|
60 |
end |
|
61 | ||
62 | 56 |
def builtin_type |
63 | 57 |
nil |
64 | 58 |
end |
app/models/issue.rb | ||
---|---|---|
1451 | 1451 | |
1452 | 1452 |
# Returns a string of css classes that apply to the issue |
1453 | 1453 |
def css_classes(user=User.current) |
1454 |
s = +"issue tracker-#{tracker_id} status-#{status_id} #{priority.try(:css_classes)}"
|
|
1454 |
s = +"issue tracker-#{tracker_id} status-#{status_id} #{priority&.css_classes}"
|
|
1455 | 1455 |
s << ' closed' if closed? |
1456 | 1456 |
s << ' overdue' if overdue? |
1457 | 1457 |
s << ' child' if child? |
app/models/issue_query.rb | ||
---|---|---|
159 | 159 |
) |
160 | 160 |
add_available_filter( |
161 | 161 |
"priority_id", |
162 |
:type => :list_with_history, :values => IssuePriority.all.collect{|s| [s.name, s.id.to_s]} |
|
162 |
:type => :list_with_history, |
|
163 |
:values => IssuePriority.pluck(:name, :id).map {|name, id| [name, id.to_s]} |
|
163 | 164 |
) |
164 | 165 |
add_available_filter( |
165 | 166 |
"author_id", |
... | ... | |
171 | 172 |
) |
172 | 173 |
add_available_filter( |
173 | 174 |
"member_of_group", |
174 |
:type => :list_optional, :values => lambda {Group.givable.visible.collect {|g| [g.name, g.id.to_s]}} |
|
175 |
:type => :list_optional, |
|
176 |
:values => lambda {Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}} |
|
175 | 177 |
) |
176 | 178 |
add_available_filter( |
177 | 179 |
"assigned_to_role", |
178 |
:type => :list_optional, :values => lambda {Role.givable.collect {|r| [r.name, r.id.to_s]}} |
|
180 |
:type => :list_optional, |
|
181 |
:values => lambda {Role.givable.pluck(:name, :id).map {|name, id| [name, id.to_s]}} |
|
179 | 182 |
) |
180 | 183 |
add_available_filter( |
181 | 184 |
"fixed_version_id", |
... | ... | |
195 | 198 |
add_available_filter( |
196 | 199 |
"category_id", |
197 | 200 |
:type => :list_optional_with_history, |
198 |
:values => lambda {project.issue_categories.collect{|s| [s.name, s.id.to_s]}}
|
|
201 |
:values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
|
|
199 | 202 |
) if project |
200 | 203 |
add_available_filter "subject", :type => :text |
201 | 204 |
add_available_filter "description", :type => :text |
app/models/query.rb | ||
---|---|---|
589 | 589 |
end |
590 | 590 | |
591 | 591 |
def subproject_values |
592 |
project.descendants.visible.collect{|s| [s.name, s.id.to_s]}
|
|
592 |
project.descendants.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]}
|
|
593 | 593 |
end |
594 | 594 | |
595 | 595 |
def principals |
... | ... | |
651 | 651 |
else |
652 | 652 |
statuses = IssueStatus.all.sorted |
653 | 653 |
end |
654 |
statuses.collect{|s| [s.name, s.id.to_s]}
|
|
654 |
statuses.pluck(:name, :id).map {|name, id| [name, id.to_s]}
|
|
655 | 655 |
end |
656 | 656 | |
657 | 657 |
def watcher_values |
... | ... | |
996 | 996 | |
997 | 997 |
if field == 'project_id' || (self.type == 'ProjectQuery' && %w[id parent_id].include?(field)) |
998 | 998 |
if v.delete('mine') |
999 |
v += User.current.memberships.map {|m| m.project_id.to_s}
|
|
999 |
v += User.current.memberships.pluck(:project_id).map(&:to_s)
|
|
1000 | 1000 |
end |
1001 | 1001 |
if v.delete('bookmarks') |
1002 | 1002 |
v += User.current.bookmarked_project_ids |
app/models/time_entry_query.rb | ||
---|---|---|
80 | 80 |
"issue.category_id", |
81 | 81 |
:type => :list_optional, |
82 | 82 |
:name => l("label_attribute_of_issue", :name => l(:field_category)), |
83 |
:values => lambda {project.issue_categories.collect{|s| [s.name, s.id.to_s]}}
|
|
83 |
:values => lambda {project.issue_categories.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
|
|
84 | 84 |
) if project |
85 | 85 |
add_available_filter( |
86 | 86 |
"issue.subject", |
app/models/user_query.rb | ||
---|---|---|
45 | 45 |
type: :list_optional, values: ->{ auth_sources_values } |
46 | 46 |
add_available_filter "is_member_of_group", |
47 | 47 |
type: :list_optional, |
48 |
values: ->{ Group.givable.visible.map {|g| [g.name, g.id.to_s] } }
|
|
48 |
values: ->{ Group.givable.visible.pluck(:name, :id).map {|name, id| [name, id.to_s]} }
|
|
49 | 49 |
if Setting.twofa? |
50 | 50 |
add_available_filter "twofa_scheme", |
51 | 51 |
type: :list_optional, |
... | ... | |
65 | 65 |
end |
66 | 66 | |
67 | 67 |
def auth_sources_values |
68 |
AuthSource.order(name: :asc).to_a.map do |auth_source| |
|
69 |
[auth_source.name, auth_source.id] |
|
70 |
end |
|
68 |
AuthSource.order(name: :asc).pluck(:name, :id) |
|
71 | 69 |
end |
72 | 70 | |
73 | 71 |
def user_statuses_values |
... | ... | |
131 | 129 | |
132 | 130 |
def sql_for_is_member_of_group_field(field, operator, value) |
133 | 131 |
if ["*", "!*"].include? operator |
134 |
value = Group.givable.map(&:id)
|
|
132 |
value = Group.givable.ids
|
|
135 | 133 |
end |
136 | 134 | |
137 | 135 |
e = operator.start_with?("!") ? "NOT EXISTS" : "EXISTS" |