From 66b8b8f3364ef08b24331b5ab9a08d490caf27c2 Mon Sep 17 00:00:00 2001 From: Steven Chanin Date: Tue, 21 Sep 2010 12:07:14 -0700 Subject: [PATCH] Fix #6244 - Make Issues use Setting.user_format --- app/models/query.rb | 7 ++++++- app/models/user.rb | 8 ++++++++ test/unit/query_test.rb | 25 +++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletions(-) diff --git a/app/models/query.rb b/app/models/query.rb index 59131af..9e765c0 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -126,7 +126,7 @@ class Query < ActiveRecord::Base QueryColumn.new(:priority, :sortable => "#{IssuePriority.table_name}.position", :default_order => 'desc', :groupable => true), QueryColumn.new(:subject, :sortable => "#{Issue.table_name}.subject"), QueryColumn.new(:author), - QueryColumn.new(:assigned_to, :sortable => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], :groupable => true), + QueryColumn.new(:assigned_to, :sortable => User::USER_SORT_FORMATS[:lastname_firstname], :groupable => true), QueryColumn.new(:updated_on, :sortable => "#{Issue.table_name}.updated_on", :default_order => 'desc'), QueryColumn.new(:category, :sortable => "#{IssueCategory.table_name}.name", :groupable => true), QueryColumn.new(:fixed_version, :sortable => ["#{Version.table_name}.effective_date", "#{Version.table_name}.name"], :default_order => 'desc', :groupable => true), @@ -283,6 +283,11 @@ class Query < ActiveRecord::Base def available_columns return @available_columns if @available_columns @available_columns = Query.available_columns + + #override Class variable values with :user_format from the database + assigned_to_query_column = @available_columns.find {|col| col.is_a?(QueryColumn) && col.name == :assigned_to } + assigned_to_query_column.sortable = User::USER_SORT_FORMATS[Setting.user_format] unless assigned_to_query_column.nil? + @available_columns += (project ? project.all_issue_custom_fields : IssueCustomField.find(:all) diff --git a/app/models/user.rb b/app/models/user.rb index 5ae7a56..af83f56 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -32,6 +32,14 @@ class User < Principal :lastname_coma_firstname => '#{lastname}, #{firstname}', :username => '#{login}' } + + USER_SORT_FORMATS = { + :firstname_lastname => ["#{User.table_name}.firstname", "#{User.table_name}.lastname", "#{User.table_name}.id"], + :firstname => ["#{User.table_name}.firstname", "#{User.table_name}.id"], + :lastname_firstname => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], + :lastname_coma_firstname => ["#{User.table_name}.lastname", "#{User.table_name}.firstname", "#{User.table_name}.id"], + :username => ["#{User.table_name}.login", "#{User.table_name}.id"] + } has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} diff --git a/test/unit/query_test.rb b/test/unit/query_test.rb index db6173b..44111cd 100644 --- a/test/unit/query_test.rb +++ b/test/unit/query_test.rb @@ -303,6 +303,31 @@ class QueryTest < ActiveSupport::TestCase assert_equal values.sort, values end + def test_sort_by_assignee_default + q = Query.new + c = q.available_columns.find {|col| col.is_a?(QueryColumn) && col.name == :assigned_to } + + assert c + #since this test does not explicitly set Setting.user_format, it ultimately defaults back + #to the value in config/settings.yml which is :firstname_lastname + assert c.sortable == ["#{User.table_name}.firstname", "#{User.table_name}.lastname", "#{User.table_name}.id"] + end + + def test_sort_by_assignee_username + current_display_format = Setting.user_format + assert current_display_format != :username + + Setting.user_format = :username + + q = Query.new + c = q.available_columns.find {|col| col.is_a?(QueryColumn) && col.name == :assigned_to } + + assert c + assert c.sortable == ["#{User.table_name}.login", "#{User.table_name}.id"] + + Setting.user_format = current_display_format + end + def test_invalid_query_should_raise_query_statement_invalid_error q = Query.new assert_raise Query::StatementInvalid do -- 1.7.2