From 8d7aaf0e5501c472504467b9252dd5bde14a98c8 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 3 Jan 2012 21:46:53 +0200 Subject: [PATCH] Note on merge request open/close --- app/models/mailer_observer.rb | 111 ++++++++++++++++++---------------- 1 file changed, 59 insertions(+), 52 deletions(-) diff --git a/app/models/mailer_observer.rb b/app/models/mailer_observer.rb index f59469a1608..2bf383e5de0 100644 --- a/app/models/mailer_observer.rb +++ b/app/models/mailer_observer.rb @@ -16,66 +16,73 @@ class MailerObserver < ActiveRecord::Observer protected - def new_issue(issue) - if issue.assignee != current_user - Notify.new_issue_email(issue).deliver + def new_issue(issue) + if issue.assignee != current_user + Notify.new_issue_email(issue).deliver + end + end + + def new_user(user) + Notify.new_user_email(user, user.password).deliver + end + + def new_note(note) + return unless note.notify or note.notify_author + note.project.users.reject { |u| u.id == current_user.id } .each do |u| + case note.noteable_type + when "Commit" then + Notify.note_commit_email(u, note).deliver + when "Issue" then + Notify.note_issue_email(u, note).deliver + when "MergeRequest" then + Notify.note_merge_request_email(u, note).deliver + when "Snippet" + true + else + Notify.note_wall_email(u, note).deliver + end + end + end + + def new_merge_request(merge_request) + if merge_request.assignee != current_user + Notify.new_merge_request_email(merge_request).deliver + end + end + + def changed_merge_request(merge_request) + if merge_request.assignee_id_changed? + recipients_ids = merge_request.assignee_id_was, merge_request.assignee_id + recipients_ids.delete current_user.id + + User.find(recipients_ids).each do |user| + Notify.changed_merge_request_email(user, merge_request).deliver end end - def new_user(user) - Notify.new_user_email(user, user.password).deliver + if merge_request.closed_changed? + note = Note.new(:noteable => merge_request, :project => merge_request.project) + note.author = current_user + note.note = "_Status changed to #{merge_request.closed ? 'closed' : 'reopened'}_" + note.save() end + end - def new_note(note) - return unless note.notify or note.notify_author - note.project.users.reject { |u| u.id == current_user.id } .each do |u| - case note.noteable_type - when "Commit" then - Notify.note_commit_email(u, note).deliver - when "Issue" then - Notify.note_issue_email(u, note).deliver - when "MergeRequest" then - Notify.note_merge_request_email(u, note).deliver - when "Snippet" - true - else - Notify.note_wall_email(u, note).deliver - end + def changed_issue(issue) + if issue.assignee_id_changed? + recipients_ids = issue.assignee_id_was, issue.assignee_id + recipients_ids.delete current_user.id + + User.find(recipients_ids).each do |user| + Notify.changed_issue_email(user, issue).deliver end end - def new_merge_request(merge_request) - if merge_request.assignee != current_user - Notify.new_merge_request_email(merge_request).deliver - end + if issue.closed_changed? + note = Note.new(:noteable => issue, :project => issue.project) + note.author = current_user + note.note = "_Status changed to #{issue.closed ? 'closed' : 'reopened'}_" + note.save() end - - def changed_merge_request(merge_request) - if merge_request.assignee_id_changed? - recipients_ids = merge_request.assignee_id_was, merge_request.assignee_id - recipients_ids.delete current_user.id - - User.find(recipients_ids).each do |user| - Notify.changed_merge_request_email(user, merge_request).deliver - end - end - end - - def changed_issue(issue) - if issue.assignee_id_changed? - recipients_ids = issue.assignee_id_was, issue.assignee_id - recipients_ids.delete current_user.id - - User.find(recipients_ids).each do |user| - Notify.changed_issue_email(user, issue).deliver - end - end - - if issue.closed_changed? - note = Note.new(:noteable => issue, :project => issue.project) - note.author = current_user - note.note = "_Status changed to #{issue.closed ? 'closed' : 'reopened'}_" - note.save() - end end end