Skip to content

Commit

Permalink
Add option to disable code diffs to EmailOnPush.
Browse files Browse the repository at this point in the history
See #1950
  • Loading branch information
Douwe Maan committed Feb 25, 2015
1 parent e0c186c commit 85af3e8
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 42 deletions.
2 changes: 1 addition & 1 deletion app/controllers/admin/services_controller.rb
Expand Up @@ -46,7 +46,7 @@ def application_services_params
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
:build_key, :server, :teamcity_url, :build_type,
:description, :issues_url, :new_issue_url, :restrict_to_branch,
:send_from_committer_email
:send_from_committer_email, :disable_diffs
])
end
end
2 changes: 1 addition & 1 deletion app/controllers/projects/services_controller.rb
Expand Up @@ -51,7 +51,7 @@ def service_params
:user_key, :device, :priority, :sound, :bamboo_url, :username, :password,
:build_key, :server, :teamcity_url, :build_type,
:description, :issues_url, :new_issue_url, :restrict_to_branch,
:send_from_committer_email
:send_from_committer_email, :disable_diffs
)
end
end
3 changes: 2 additions & 1 deletion app/mailers/emails/projects.rb
Expand Up @@ -16,13 +16,14 @@ def project_was_moved_email(project_id, user_id)
subject: subject("Project was moved"))
end

def repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email = false)
def repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email = false, disable_diffs = false)
@project = Project.find(project_id)
@author = User.find(author_id)
@compare = compare
@commits = Commit.decorate(compare.commits)
@diffs = compare.diffs
@branch = branch.gsub("refs/heads/", "")
@disable_diffs = disable_diffs

@subject = "[#{@project.path_with_namespace}][#{@branch}] "

Expand Down
8 changes: 7 additions & 1 deletion app/models/project_services/emails_on_push_service.rb
Expand Up @@ -15,6 +15,7 @@

class EmailsOnPushService < Service
prop_accessor :send_from_committer_email
prop_accessor :disable_diffs
prop_accessor :recipients
validates :recipients, presence: true, if: :activated?

Expand All @@ -34,13 +35,18 @@ def send_from_committer_email?
self.send_from_committer_email == "1"
end

def disable_diffs?
self.disable_diffs == "1"
end

def execute(push_data)
EmailsOnPushWorker.perform_async(project_id, recipients, push_data, self.send_from_committer_email?)
EmailsOnPushWorker.perform_async(project_id, recipients, push_data, send_from_committer_email?, disable_diffs?)
end

def fields
[
{ type: 'checkbox', name: 'send_from_committer_email', title: "Send from committer email if domain matches" },
{ type: 'checkbox', name: 'disable_diffs', title: "Disable code diffs" },
{ type: 'textarea', name: 'recipients', placeholder: 'Emails separated by whitespace' },
]
end
Expand Down
45 changes: 23 additions & 22 deletions app/views/notify/repository_push_email.html.haml
Expand Up @@ -16,7 +16,7 @@
%ul
- @diffs.each_with_index do |diff, i|
%li.file-stats
%a{href: "#diff-#{i}"}
%a{href: "#{@target_url if @disable_diffs}#diff-#{i}" }
- if diff.deleted_file
%span.deleted-file
&minus;
Expand All @@ -32,27 +32,28 @@
- else
= diff.new_path

%h4 Changes:
- @diffs.each_with_index do |diff, i|
%li{id: "diff-#{i}"}
%a{href: @target_url + "#diff-#{i}"}
- if diff.deleted_file
%strong
= diff.old_path
deleted
- elsif diff.renamed_file
%strong
= diff.old_path
&rarr;
%strong
= diff.new_path
- else
%strong
= diff.new_path
%hr
%pre
= color_email_diff(diff.diff)
%br
- unless @disable_diffs
%h4 Changes:
- @diffs.each_with_index do |diff, i|
%li{id: "diff-#{i}"}
%a{href: @target_url + "#diff-#{i}"}
- if diff.deleted_file
%strong
= diff.old_path
deleted
- elsif diff.renamed_file
%strong
= diff.old_path
&rarr;
%strong
= diff.new_path
- else
%strong
= diff.new_path
%hr
%pre
= color_email_diff(diff.diff)
%br

- if @compare.timeout
%h5 Huge diff. To prevent performance issues changes are hidden
30 changes: 16 additions & 14 deletions app/views/notify/repository_push_email.text.haml
Expand Up @@ -19,20 +19,22 @@ Commits:
\- + #{diff.new_path}
- else
\- #{diff.new_path}
\
\
Changes:
- @diffs.each do |diff|
- unless @disable_diffs
\
\=====================================
- if diff.deleted_file
#{diff.old_path} deleted
- elsif diff.renamed_file
#{diff.old_path} → #{diff.new_path}
- else
= diff.new_path
\=====================================
!= diff.diff
\
\
Changes:
- @diffs.each do |diff|
\
\=====================================
- if diff.deleted_file
#{diff.old_path} deleted
- elsif diff.renamed_file
#{diff.old_path} → #{diff.new_path}
- else
= diff.new_path
\=====================================
!= diff.diff
- if @compare.timeout
\
\
Huge diff. To prevent performance issues it was hidden
12 changes: 10 additions & 2 deletions app/workers/emails_on_push_worker.rb
@@ -1,7 +1,7 @@
class EmailsOnPushWorker
include Sidekiq::Worker

def perform(project_id, recipients, push_data, send_from_committer_email = false)
def perform(project_id, recipients, push_data, send_from_committer_email = false, disable_diffs = false)
project = Project.find(project_id)
before_sha = push_data["before"]
after_sha = push_data["after"]
Expand All @@ -19,7 +19,15 @@ def perform(project_id, recipients, push_data, send_from_committer_email = false
return false unless compare && compare.commits.present?

recipients.split(" ").each do |recipient|
Notify.repository_push_email(project_id, recipient, author_id, branch, compare, send_from_committer_email).deliver
Notify.repository_push_email(
project_id,
recipient,
author_id,
branch,
compare,
send_from_committer_email,
disable_diffs
).deliver
end
ensure
compare = nil
Expand Down

0 comments on commit 85af3e8

Please sign in to comment.