mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-26 04:56:16 +10:00
The repository push email can be very expensive to generate, especially with syntax-highlighted diffs. Instead of generating the email for each recipient, generate one email object and reset the Message-Id and To headers for each recipient. (Cloning would also be expensive in the case of large emails, although probably not as bad as generating from scratch.)
79 lines
2.7 KiB
Ruby
79 lines
2.7 KiB
Ruby
module Emails
|
|
module Projects
|
|
def project_access_granted_email(project_member_id)
|
|
@project_member = ProjectMember.find project_member_id
|
|
@project = @project_member.project
|
|
|
|
@target_url = namespace_project_url(@project.namespace, @project)
|
|
@current_user = @project_member.user
|
|
|
|
mail(to: @project_member.user.notification_email,
|
|
subject: subject("Access to project was granted"))
|
|
end
|
|
|
|
def project_member_invited_email(project_member_id, token)
|
|
@project_member = ProjectMember.find project_member_id
|
|
@project = @project_member.project
|
|
@token = token
|
|
|
|
@target_url = namespace_project_url(@project.namespace, @project)
|
|
@current_user = @project_member.user
|
|
|
|
mail(to: @project_member.invite_email,
|
|
subject: "Invitation to join project #{@project.name_with_namespace}")
|
|
end
|
|
|
|
def project_invite_accepted_email(project_member_id)
|
|
@project_member = ProjectMember.find project_member_id
|
|
return if @project_member.created_by.nil?
|
|
|
|
@project = @project_member.project
|
|
|
|
@target_url = namespace_project_url(@project.namespace, @project)
|
|
@current_user = @project_member.created_by
|
|
|
|
mail(to: @project_member.created_by.notification_email,
|
|
subject: subject("Invitation accepted"))
|
|
end
|
|
|
|
def project_invite_declined_email(project_id, invite_email, access_level, created_by_id)
|
|
return if created_by_id.nil?
|
|
|
|
@project = Project.find(project_id)
|
|
@current_user = @created_by = User.find(created_by_id)
|
|
@access_level = access_level
|
|
@invite_email = invite_email
|
|
|
|
@target_url = namespace_project_url(@project.namespace, @project)
|
|
|
|
mail(to: @created_by.notification_email,
|
|
subject: subject("Invitation declined"))
|
|
end
|
|
|
|
def project_was_moved_email(project_id, user_id, old_path_with_namespace)
|
|
@current_user = @user = User.find user_id
|
|
@project = Project.find project_id
|
|
@target_url = namespace_project_url(@project.namespace, @project)
|
|
@old_path_with_namespace = old_path_with_namespace
|
|
mail(to: @user.notification_email,
|
|
subject: subject("Project was moved"))
|
|
end
|
|
|
|
def repository_push_email(project_id, opts = {})
|
|
@message =
|
|
Gitlab::Email::Message::RepositoryPush.new(self, project_id, opts)
|
|
|
|
# used in notify layout
|
|
@target_url = @message.target_url
|
|
@project = Project.find project_id
|
|
|
|
add_project_headers
|
|
headers['X-GitLab-Author'] = @message.author_username
|
|
|
|
mail(from: sender(@message.author_id, @message.send_from_committer_email?),
|
|
reply_to: @message.reply_to,
|
|
subject: @message.subject)
|
|
end
|
|
end
|
|
end
|