diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-10-21 17:00:14 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-10-21 17:00:14 +0000 |
commit | 8160f2addb05c662c5a9f20d7dfdf66e0e41534b (patch) | |
tree | d4a97ba823cdea4c9d479bcd5097e6ca0ffe20bd | |
parent | d6c6c7ac62bf3cf0003cc950880de5597611eb1d (diff) | |
download | redmine-8160f2addb05c662c5a9f20d7dfdf66e0e41534b.tar.gz redmine-8160f2addb05c662c5a9f20d7dfdf66e0e41534b.zip |
Adds a scope to get issues assigned to a user.
git-svn-id: http://svn.redmine.org/redmine/trunk@14720 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/helpers/my_helper.rb | 2 | ||||
-rw-r--r-- | app/models/issue.rb | 7 | ||||
-rw-r--r-- | app/views/users/show.html.erb | 2 | ||||
-rw-r--r-- | test/unit/issue_test.rb | 16 |
4 files changed, 25 insertions, 2 deletions
diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb index acb9d836e..a559b9893 100644 --- a/app/helpers/my_helper.rb +++ b/app/helpers/my_helper.rb @@ -33,7 +33,7 @@ module MyHelper def issuesassignedtome_items Issue.visible.open. - where(:assigned_to_id => ([User.current.id] + User.current.group_ids)). + assigned_to(User.current). limit(10). includes(:status, :project, :tracker, :priority). references(:status, :project, :tracker, :priority). diff --git a/app/models/issue.rb b/app/models/issue.rb index 3d57c722c..d07041ff1 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -95,6 +95,13 @@ class Issue < ActiveRecord::Base ids = [versions].flatten.compact.map {|v| v.is_a?(Version) ? v.id : v} ids.any? ? where(:fixed_version_id => ids) : where('1=0') } + scope :assigned_to, lambda {|arg| + arg = Array(arg).uniq + ids = arg.map {|p| p.is_a?(Principal) ? p.id : p} + ids += arg.select {|p| p.is_a?(User)}.map(&:group_ids).flatten.uniq + ids.compact! + ids.any? ? where(:assigned_to_id => ids) : none + } before_validation :clear_disabled_fields before_create :default_assign diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index c5180885f..a4d0c4b5b 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -27,7 +27,7 @@ <ul> <li><%= link_to l(:label_assigned_issues), issues_path(:set_filter => 1, :assigned_to_id => 'me', :sort => 'priority:desc,updated_on:desc') %>: - <%= Issue.visible.open.where(:assigned_to_id => ([@user.id] + @user.group_ids)).count %> + <%= Issue.visible.open.assigned_to(@user).count %> <li><%= link_to l(:label_reported_issues), issues_path(:set_filter => 1, :status_id => '*', :author_id => @user.id) %>: <%= Issue.visible.where(:author_id => @user.id).count %> diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index bed63b767..4b9fbda0b 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -418,6 +418,22 @@ class IssueTest < ActiveSupport::TestCase assert_equal 0, Issue.fixed_version([]).count end + def test_assigned_to_scope_should_return_issues_assigned_to_the_user + user = User.generate! + issue = Issue.generate! + Issue.where(:id => issue.id).update_all :assigned_to_id => user.id + assert_equal [issue], Issue.assigned_to(user).to_a + end + + def test_assigned_to_scope_should_return_issues_assigned_to_the_user_groups + group = Group.generate! + user = User.generate! + group.users << user + issue = Issue.generate! + Issue.where(:id => issue.id).update_all :assigned_to_id => group.id + assert_equal [issue], Issue.assigned_to(user).to_a + end + def test_errors_full_messages_should_include_custom_fields_errors field = IssueCustomField.find_by_name('Database') |