git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3121 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
8bc0f7888b
commit
c870a7b9ef
|
@ -250,13 +250,23 @@ class Issue < ActiveRecord::Base
|
||||||
blocked? ? statuses.reject {|s| s.is_closed?} : statuses
|
blocked? ? statuses.reject {|s| s.is_closed?} : statuses
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the mail adresses of users that should be notified for the issue
|
# Returns the mail adresses of users that should be notified
|
||||||
def recipients
|
def recipients
|
||||||
recipients = project.recipients
|
notified = project.notified_users
|
||||||
# Author and assignee are always notified unless they have been locked
|
# Author and assignee are always notified unless they have been locked
|
||||||
recipients << author.mail if author && author.active?
|
notified << author if author && author.active?
|
||||||
recipients << assigned_to.mail if assigned_to && assigned_to.active?
|
notified << assigned_to if assigned_to && assigned_to.active?
|
||||||
recipients.compact.uniq
|
notified.uniq!
|
||||||
|
# Remove users that can not view the issue
|
||||||
|
notified.reject! {|user| !visible?(user)}
|
||||||
|
notified.collect(&:mail)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Returns the mail adresses of watchers that should be notified
|
||||||
|
def watcher_recipients
|
||||||
|
notified = watcher_users
|
||||||
|
notified.reject! {|user| !user.active? || !visible?(user)}
|
||||||
|
notified.collect(&:mail)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns the total number of hours spent on this issue.
|
# Returns the total number of hours spent on this issue.
|
||||||
|
|
|
@ -352,6 +352,11 @@ class Project < ActiveRecord::Base
|
||||||
members.select {|m| m.mail_notification? || m.user.mail_notification?}.collect {|m| m.user.mail}
|
members.select {|m| m.mail_notification? || m.user.mail_notification?}.collect {|m| m.user.mail}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns the users that should be notified on project events
|
||||||
|
def notified_users
|
||||||
|
members.select {|m| m.mail_notification? || m.user.mail_notification?}.collect {|m| m.user}
|
||||||
|
end
|
||||||
|
|
||||||
# Returns an array of all custom fields enabled for project issues
|
# Returns an array of all custom fields enabled for project issues
|
||||||
# (explictly associated custom fields and custom fields enabled for all projects)
|
# (explictly associated custom fields and custom fields enabled for all projects)
|
||||||
def all_issue_custom_fields
|
def all_issue_custom_fields
|
||||||
|
|
|
@ -185,7 +185,7 @@ issues_012:
|
||||||
description:
|
description:
|
||||||
tracker_id: 1
|
tracker_id: 1
|
||||||
assigned_to_id:
|
assigned_to_id:
|
||||||
author_id: 2
|
author_id: 3
|
||||||
status_id: 5
|
status_id: 5
|
||||||
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
start_date: <%= 1.day.ago.to_date.to_s(:db) %>
|
||||||
due_date:
|
due_date:
|
||||||
|
|
|
@ -353,6 +353,23 @@ class IssueTest < ActiveSupport::TestCase
|
||||||
assert_nil copy.custom_value_for(2)
|
assert_nil copy.custom_value_for(2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_recipients_should_not_include_users_that_cannot_view_the_issue
|
||||||
|
issue = Issue.find(12)
|
||||||
|
assert issue.recipients.include?(issue.author.mail)
|
||||||
|
# move the issue to a private project
|
||||||
|
copy = issue.move_to(Project.find(5), Tracker.find(2), :copy => true)
|
||||||
|
# author is not a member of project anymore
|
||||||
|
assert !copy.recipients.include?(copy.author.mail)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_watcher_recipients_should_not_include_users_that_cannot_view_the_issue
|
||||||
|
user = User.find(3)
|
||||||
|
issue = Issue.find(9)
|
||||||
|
Watcher.create!(:user => user, :watchable => issue)
|
||||||
|
assert issue.watched_by?(user)
|
||||||
|
assert !issue.watcher_recipients.include?(user.mail)
|
||||||
|
end
|
||||||
|
|
||||||
def test_issue_destroy
|
def test_issue_destroy
|
||||||
Issue.find(1).destroy
|
Issue.find(1).destroy
|
||||||
assert_nil Issue.find_by_id(1)
|
assert_nil Issue.find_by_id(1)
|
||||||
|
|
Loading…
Reference in New Issue