diff options
author | Marius Mathiesen <marius@shortcut.no> | 2009-12-10 11:10:48 +0100 |
---|---|---|
committer | Marius Mathiesen <marius@shortcut.no> | 2009-12-10 11:11:59 +0100 |
commit | c2c20fe017a96c00811dcbd7939eceea5fd998ef (patch) | |
tree | 28399696c531463087bf67d77a8b9d74665ab0b9 /app/models/merge_request.rb | |
parent | 9efab315b1e6271b975b05dbbe9c12058931e434 (diff) | |
download | gitorious-mainline-outdated-c2c20fe017a96c00811dcbd7939eceea5fd998ef.zip gitorious-mainline-outdated-c2c20fe017a96c00811dcbd7939eceea5fd998ef.tar.gz gitorious-mainline-outdated-c2c20fe017a96c00811dcbd7939eceea5fd998ef.tar.bz2 |
Change the way reviewers are notified about new merge requests
When a merge request is created, each reviewer has this added as a favorite. In the same process, a FeedItem is created
for the event associated (now created in the model and accessible as #creation_event). Messages are no longer sent to the
reviewers, as this gave a lot of email to the reviewers. Instead, they will now be able to track the creation (and updates) of merge
requests through their newsfeed.
Since notifications are no longer sent to reviewers, the checkbox on Repositories#edit is no longer displayed (it has no effect). It
is still in the database, though.
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 6fdb4e8..9e8c8bb 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -371,19 +371,11 @@ class MergeRequest < ActiveRecord::Base end def notify_subscribers_about_creation - return unless target_repository.notify_committers_on_new_merge_request? - reviewers.each do |reviewer| - message = messages.build({ - :sender => user, - :recipient => reviewer, - :subject => I18n.t("mailer.request_notification", - :login => user.login, - :title => target_repository.project.title), - :body => proposal, - :notifiable => self - }) - message.save - add_to_reviewers_favorites(reviewer) + reviewers.each { |reviewer| + add_to_reviewers_favorites(reviewer) + } + if event = creation_event + FeedItem.bulk_create_from_watcher_list_and_event!(reviewers.map(&:id), event) end end @@ -395,6 +387,20 @@ class MergeRequest < ActiveRecord::Base reviewer.favorites.create(:watchable => self, :skip_events => true) end + def add_creation_event(owner, user) + owner.create_event( + Action::REQUEST_MERGE, self, user + ) + end + + def creation_event + Event.find(:first, :conditions => { + :action => Action::REQUEST_MERGE, + :target_id => self.id, + :target_type => self.class.name + }) + end + def oauth_request_token=(token) self.oauth_token = token.token self.oauth_secret = token.secret |