From aca80173b64d1c4278f3dc3cddd5b47147081798 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Fri, 1 Feb 2019 23:31:52 +0000 Subject: [PATCH] Multiple issue ids in "Parent task" filter (#30482). Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@17843 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/issue_query.rb | 8 +++++++- test/unit/query_test.rb | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index 2e01507ac..225b54fd7 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -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 diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 4950d9b1c..e180c3dae 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -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']) -- 2.39.5