diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-12-26 13:34:50 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-12-26 13:34:50 +0000 |
commit | 852dee37ec7b32106376bf14b7563983d37d5204 (patch) | |
tree | 1bfccce03549a1cb130679229c42e12b424d269b | |
parent | a76045d792cf7df54264b7a8983325e3f0ba719f (diff) | |
download | redmine-852dee37ec7b32106376bf14b7563983d37d5204.tar.gz redmine-852dee37ec7b32106376bf14b7563983d37d5204.zip |
Do not add errors on attributes on fake attributes.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8388 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/query.rb | 17 | ||||
-rw-r--r-- | test/unit/query_test.rb | 2 |
2 files changed, 12 insertions, 7 deletions
diff --git a/app/models/query.rb b/app/models/query.rb index 262a738d1..5d8640199 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -174,20 +174,20 @@ class Query < ActiveRecord::Base if values_for(field) case type_for(field) when :integer - errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } + add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } when :float - errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d*)?$/) } + add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+(\.\d*)?$/) } when :date, :date_past case operator_for(field) when "=", ">=", "<=", "><" - errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && (!v.match(/^\d{4}-\d{2}-\d{2}$/) || (Date.parse(v) rescue nil).nil?) } + add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && (!v.match(/^\d{4}-\d{2}-\d{2}$/) || (Date.parse(v) rescue nil).nil?) } when ">t-", "<t-", "t-" - errors.add(label_for(field), :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } + add_filter_error(field, :invalid) if values_for(field).detect {|v| v.present? && !v.match(/^\d+$/) } end end end - errors.add label_for(field), :blank unless + add_filter_error(field, :blank) unless # filter requires one or more values (values_for(field) and !values_for(field).first.blank?) or # filter doesn't require any value @@ -195,6 +195,11 @@ class Query < ActiveRecord::Base end if filters end + def add_filter_error(field, message) + m = label_for(field) + " " + l(message, :scope => 'activerecord.errors.messages') + errors.add(:base, m) + end + # Returns true if the query is visible to +user+ or the current user. def visible?(user=User.current) (project.nil? || user.allowed_to?(:view_issues, project)) && (self.is_public? || self.user_id == user.id) @@ -347,7 +352,7 @@ class Query < ActiveRecord::Base def label_for(field) label = available_filters[field][:name] if available_filters.has_key?(field) - label ||= field.gsub(/\_id$/, "") + label ||= l("field_#{field.to_s.gsub(/_id$/, '')}", :default => field) end def available_columns diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index 1980018a5..37a8face9 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -614,7 +614,7 @@ class QueryTest < ActiveSupport::TestCase def test_label_for q = Query.new - assert_equal 'assigned_to', q.label_for('assigned_to_id') + assert_equal 'Assignee', q.label_for('assigned_to_id') end def test_editable_by |