Project

General

Profile

Actions

Patch #25265

closed

QueriesController can not handle subclass of IssueQuery

Added by Haihan Ji about 7 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Normal
Category:
Issues filter
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

I have a PivotQuery, it's a subclass of IssueQuery.
But Query don't think it is subclass of himself.
So, r15635 let my plugin down.

I changed QueriesController to fix it.

OLD CODE:

def query_class
  Query.get_subclass(params[:type] || 'IssueQuery')
end

New Code
def query_class
  get_query_class(params[:type] || 'IssueQuery')
end

def get_query_class(class_name)
  klass = nil
  begin
    klass = class_name.to_s.classify.constantize
  rescue
    # invalid class name
  end
  unless klass && klass.new.is_a?(Query)
    klass = nil
  end
  klass    
end

Actions #1

Updated by Haihan Ji about 7 years ago

Maybe klass < Query is better than klass && klass.new.is_a?(Query).

Actions #2

Updated by Jean-Philippe Lang about 7 years ago

We should be able to fix get_subclass instead:

Index: lib/redmine/subclass_factory.rb
===================================================================
--- lib/redmine/subclass_factory.rb    (revision 16379)
+++ lib/redmine/subclass_factory.rb    (working copy)
@@ -29,7 +29,7 @@
         rescue
           # invalid class name
         end
-        unless subclasses.include? klass
+        unless descendants.include? klass
           klass = nil
         end
         klass

Would it work for you?

Actions #3

Updated by Alexander Meindl over 4 years ago

Hi Jean-Philippe,

your suggested change would be fix problems for some plugins, which I maintain. It would be nice to get this change in a upcoming release.

Actions #4

Updated by Go MAEDA over 4 years ago

  • Assignee set to Jean-Philippe Lang
  • Target version set to 4.1.0
Actions #5

Updated by Jean-Philippe Lang over 4 years ago

  • Status changed from New to Closed
Actions #6

Updated by Alexander Meindl about 4 years ago

This change is only available in trunk, but not in Branch 4.1-stable - as this issue shows. Can we get this to 4.1-stable branch?

Actions #7

Updated by Marius BÄ‚LTEANU about 4 years ago

Alexander Meindl wrote:

This change is only available in trunk, but not in Branch 4.1-stable - as this issue shows. Can we get this to 4.1-stable branch?

It is already on 4.1-stable branch, pleasee source:branches/4.1-stable/lib/redmine/subclass_factory.rb#L34.

Actions #8

Updated by Alexander Meindl about 4 years ago

You are right! Sorry for bothering you about this.

Actions

Also available in: Atom PDF