@@ -333,6 +333,10 class Query < ActiveRecord::Base | |||||
333 | available_filters[field][:type] if available_filters.has_key?(field) |
|
333 | available_filters[field][:type] if available_filters.has_key?(field) | |
334 | end |
|
334 | end | |
335 |
|
335 | |||
|
336 | def allowed_values_for(field) | |||
|
337 | available_filters[field][:values] if available_filters.has_key?(field) | |||
|
338 | end | |||
|
339 | ||||
336 | def operator_for(field) |
|
340 | def operator_for(field) | |
337 | has_filter?(field) ? filters[field][:operator] : nil |
|
341 | has_filter?(field) ? filters[field][:operator] : nil | |
338 | end |
|
342 | end | |
@@ -649,6 +653,7 class Query < ActiveRecord::Base | |||||
649 | sql = '' |
|
653 | sql = '' | |
650 | case operator |
|
654 | case operator | |
651 | when "=" |
|
655 | when "=" | |
|
656 | value &= allowed_values_for(field).collect {|val| val[1]} if value.present? && allowed_values_for(field).present? | |||
652 | if value.any? |
|
657 | if value.any? | |
653 | case type_for(field) |
|
658 | case type_for(field) | |
654 | when :date, :date_past |
|
659 | when :date, :date_past | |
@@ -665,6 +670,7 class Query < ActiveRecord::Base | |||||
665 | sql = "1=0" |
|
670 | sql = "1=0" | |
666 | end |
|
671 | end | |
667 | when "!" |
|
672 | when "!" | |
|
673 | value &= allowed_values_for(field).collect {|val| val[1]} if value.present? && allowed_values_for(field).present? | |||
668 | if value.any? |
|
674 | if value.any? | |
669 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" |
|
675 | sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" | |
670 | else |
|
676 | else |
@@ -162,7 +162,9 class IssuesControllerTest < ActionController::TestCase | |||||
162 | '!~This is part of a subject' => { :op => '!~', :values => ['This is part of a subject'] }}, |
|
162 | '!~This is part of a subject' => { :op => '!~', :values => ['This is part of a subject'] }}, | |
163 | 'tracker_id' => { |
|
163 | 'tracker_id' => { | |
164 | '3' => { :op => '=', :values => ['3'] }, |
|
164 | '3' => { :op => '=', :values => ['3'] }, | |
165 |
'=3' => { :op => '=', :values => ['3'] } |
|
165 | '=3' => { :op => '=', :values => ['3'] }, | |
|
166 | '*' => { :op => '=', :values => ['*'] }, | |||
|
167 | '!*' => { :op => '!', :values => ['*'] }}, | |||
166 | 'start_date' => { |
|
168 | 'start_date' => { | |
167 | '2011-10-12' => { :op => '=', :values => ['2011-10-12'] }, |
|
169 | '2011-10-12' => { :op => '=', :values => ['2011-10-12'] }, | |
168 | '=2011-10-12' => { :op => '=', :values => ['2011-10-12'] }, |
|
170 | '=2011-10-12' => { :op => '=', :values => ['2011-10-12'] }, |
General Comments 0
You need to be logged in to leave comments.
Login now