summaryrefslogtreecommitdiffstats
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorMarius Mathiesen <marius@shortcut.no>2009-12-10 11:10:48 +0100
committerMarius Mathiesen <marius@shortcut.no>2009-12-10 11:11:59 +0100
commitc2c20fe017a96c00811dcbd7939eceea5fd998ef (patch)
tree28399696c531463087bf67d77a8b9d74665ab0b9 /app/models/merge_request.rb
parent9efab315b1e6271b975b05dbbe9c12058931e434 (diff)
downloadgitorious-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.rb32
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