@@ -327,7 +327,7 class Mailer < ActionMailer::Base | |||||
327 | # * :days => how many days in the future to remind about (defaults to 7) |
|
327 | # * :days => how many days in the future to remind about (defaults to 7) | |
328 | # * :tracker => id of tracker for filtering issues (defaults to all trackers) |
|
328 | # * :tracker => id of tracker for filtering issues (defaults to all trackers) | |
329 | # * :project => id or identifier of project to process (defaults to all projects) |
|
329 | # * :project => id or identifier of project to process (defaults to all projects) | |
330 | # * :users => array of user ids who should be reminded |
|
330 | # * :users => array of user/group ids who should be reminded | |
331 | def self.reminders(options={}) |
|
331 | def self.reminders(options={}) | |
332 | days = options[:days] || 7 |
|
332 | days = options[:days] || 7 | |
333 | project = options[:project] ? Project.find(options[:project]) : nil |
|
333 | project = options[:project] ? Project.find(options[:project]) : nil | |
@@ -343,6 +343,15 class Mailer < ActionMailer::Base | |||||
343 | scope = scope.scoped(:conditions => {:tracker_id => tracker.id}) if tracker |
|
343 | scope = scope.scoped(:conditions => {:tracker_id => tracker.id}) if tracker | |
344 |
|
344 | |||
345 | issues_by_assignee = scope.all(:include => [:status, :assigned_to, :project, :tracker]).group_by(&:assigned_to) |
|
345 | issues_by_assignee = scope.all(:include => [:status, :assigned_to, :project, :tracker]).group_by(&:assigned_to) | |
|
346 | issues_by_assignee.keys.each do |assignee| | |||
|
347 | if assignee.is_a?(Group) | |||
|
348 | assignee.users.each do |user| | |||
|
349 | issues_by_assignee[user] ||= [] | |||
|
350 | issues_by_assignee[user] += issues_by_assignee[assignee] | |||
|
351 | end | |||
|
352 | end | |||
|
353 | end | |||
|
354 | ||||
346 | issues_by_assignee.each do |assignee, issues| |
|
355 | issues_by_assignee.each do |assignee, issues| | |
347 | reminder(assignee, issues, days).deliver if assignee.is_a?(User) && assignee.active? |
|
356 | reminder(assignee, issues, days).deliver if assignee.is_a?(User) && assignee.active? | |
348 | end |
|
357 | end |
@@ -22,7 +22,7 Available options: | |||||
22 | * days => number of days to remind about (defaults to 7) |
|
22 | * days => number of days to remind about (defaults to 7) | |
23 | * tracker => id of tracker (defaults to all trackers) |
|
23 | * tracker => id of tracker (defaults to all trackers) | |
24 | * project => id or identifier of project (defaults to all projects) |
|
24 | * project => id or identifier of project (defaults to all projects) | |
25 | * users => comma separated list of user ids who should be reminded |
|
25 | * users => comma separated list of user/group ids who should be reminded | |
26 |
|
26 | |||
27 | Example: |
|
27 | Example: | |
28 | rake redmine:send_reminders days=7 users="1,23, 56" RAILS_ENV="production" |
|
28 | rake redmine:send_reminders days=7 users="1,23, 56" RAILS_ENV="production" |
@@ -508,6 +508,27 class MailerTest < ActiveSupport::TestCase | |||||
508 | assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail |
|
508 | assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail | |
509 | end |
|
509 | end | |
510 |
|
510 | |||
|
511 | def test_reminder_should_include_issues_assigned_to_groups | |||
|
512 | with_settings :default_language => 'en' do | |||
|
513 | group = Group.generate! | |||
|
514 | group.users << User.find(2) | |||
|
515 | group.users << User.find(3) | |||
|
516 | ||||
|
517 | Issue.create!(:project_id => 1, :tracker_id => 1, :status_id => 1, | |||
|
518 | :subject => 'Assigned to group', :assigned_to => group, | |||
|
519 | :due_date => 5.days.from_now, | |||
|
520 | :author_id => 2) | |||
|
521 | ActionMailer::Base.deliveries.clear | |||
|
522 | ||||
|
523 | Mailer.reminders(:days => 7) | |||
|
524 | assert_equal 2, ActionMailer::Base.deliveries.size | |||
|
525 | assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), ActionMailer::Base.deliveries.map(&:bcc).flatten.sort | |||
|
526 | ActionMailer::Base.deliveries.each do |mail| | |||
|
527 | assert_mail_body_match 'Assigned to group', mail | |||
|
528 | end | |||
|
529 | end | |||
|
530 | end | |||
|
531 | ||||
511 | def test_mailer_should_not_change_locale |
|
532 | def test_mailer_should_not_change_locale | |
512 | Setting.default_language = 'en' |
|
533 | Setting.default_language = 'en' | |
513 | # Set current language to italian |
|
534 | # Set current language to italian |
General Comments 0
You need to be logged in to leave comments.
Login now