]> source.dussan.org Git - redmine.git/commitdiff
Use a single query to retrieve issues on the roadmap.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 2 Mar 2012 16:27:14 +0000 (16:27 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 2 Mar 2012 16:27:14 +0000 (16:27 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9057 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/versions_controller.rb

index d7225344fb35ffc439b4ad85f8a7fe34f5a64ff7..34a5e2e34b661f662b52fd244f6c3b199bbd1bdc 100644 (file)
@@ -45,14 +45,13 @@ class VersionsController < ApplicationController
         end
 
         @issues_by_version = {}
-        unless @selected_tracker_ids.empty?
-          @versions.each do |version|
-            issues = version.fixed_issues.visible.find(:all,
-                                                       :include => [:project, :status, :tracker, :priority],
-                                                       :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
-                                                       :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
-            @issues_by_version[version] = issues
-          end
+        if @selected_tracker_ids.any? && @versions.any?
+          issues = Issue.visible.all(
+            :include => [:project, :status, :tracker, :priority, :fixed_version],
+            :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)},
+            :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id"
+          )
+          @issues_by_version = issues.group_by(&:fixed_version)
         end
         @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
       }