]> source.dussan.org Git - redmine.git/commitdiff
Multiple issue ids in "Parent task" filter (#30482).
authorGo MAEDA <maeda@farend.jp>
Fri, 1 Feb 2019 23:31:52 +0000 (23:31 +0000)
committerGo MAEDA <maeda@farend.jp>
Fri, 1 Feb 2019 23:31:52 +0000 (23:31 +0000)
Patch by Yuichi HARADA.

git-svn-id: http://svn.redmine.org/redmine/trunk@17843 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue_query.rb
test/unit/query_test.rb

index 2e01507ac8e1b4ad3eca8dcee19c4e87dda17efa..225b54fd7372880b63f0ceaf414ffd0210570da3 100644 (file)
@@ -486,7 +486,13 @@ class IssueQuery < Query
   def sql_for_parent_id_field(field, operator, value)
     case operator
     when "="
-      "#{Issue.table_name}.parent_id = #{value.first.to_i}"
+      # accepts a comma separated list of ids
+      ids = value.first.to_s.scan(/\d+/).map(&:to_i).uniq
+      if ids.present?
+        "#{Issue.table_name}.parent_id IN (#{ids.join(",")})"
+      else
+        "1=0"
+      end
     when "~"
       root_id, lft, rgt = Issue.where(:id => value.first.to_i).pluck(:root_id, :lft, :rgt).first
       if root_id && lft && rgt
index 4950d9b1c53e293687bcf299419e51b27ed9cb34..e180c3dae3c68f6c81e6936232b7533ab0d64555 100644 (file)
@@ -280,6 +280,16 @@ class QueryTest < ActiveSupport::TestCase
     assert_equal [1,3], issues.map(&:id).sort
   end
 
+  def test_operator_is_on_parent_id_should_accept_comma_separated_values
+    Issue.where(:id => [2,4]).update_all(:parent_id => 1)
+    Issue.where(:id => 5).update_all(:parent_id => 3)
+    query = IssueQuery.new(:name => '_')
+    query.add_filter("parent_id", '=', ['1,3'])
+    issues = find_issues_with_query(query)
+    assert_equal 3, issues.size
+    assert_equal [2,4,5], issues.map(&:id).sort
+  end
+
   def test_operator_between_on_issue_id_should_return_range
     query = IssueQuery.new(:name => '_')
     query.add_filter("issue_id", '><', ['2','3'])