summaryrefslogtreecommitdiffstats
path: root/app
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
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')
-rw-r--r--app/controllers/merge_requests_controller.rb2
-rw-r--r--app/models/merge_request.rb32
-rw-r--r--app/views/repositories/edit.html.erb9
3 files changed, 20 insertions, 23 deletions
diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb
index 3ecfd64..4ccf682 100644
--- a/app/controllers/merge_requests_controller.rb
+++ b/app/controllers/merge_requests_controller.rb
@@ -126,7 +126,7 @@ class MergeRequestsController < ApplicationController
def terms_accepted
@merge_request = @repository.merge_requests.find_by_sequence_number!(params[:id])
if @merge_request.terms_accepted
- @owner.create_event(Action::REQUEST_MERGE, @merge_request, current_user)
+ @merge_request.add_creation_event(@owner, current_user)
if @merge_request.has_contribution_notice?
flash[:notice] = @merge_request.contribution_notice
end
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
diff --git a/app/views/repositories/edit.html.erb b/app/views/repositories/edit.html.erb
index cce1b78..e5f0149 100644
--- a/app/views/repositories/edit.html.erb
+++ b/app/views/repositories/edit.html.erb
@@ -49,15 +49,6 @@
</span>
</p>
<p>
- <%= f.label :notify_committers_on_new_merge_request -%>:
- <%= f.check_box :notify_committers_on_new_merge_request -%><br />
- <span class="hint">
- Turning this off will not send a notification message to the
- committers of the target repository when a new new merge request
- is created
- </span>
- </p>
- <p>
<%= f.label :merge_requests_enabled, "Enable merge requests?" -%>
<%= f.check_box :merge_requests_enabled -%> <br />
<span class="hint">