Commit 26d5eaff authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'project_moving' into 'master'

Note the original location of a moved project when notifying users of the move

https://dev.gitlab.org/gitlab/gitlabhq/issues/2536

See merge request !1463
parents 2cb7a778 5b573130
...@@ -18,6 +18,7 @@ v 8.1.0 (unreleased) ...@@ -18,6 +18,7 @@ v 8.1.0 (unreleased)
- Move CI triggers page to project settings area - Move CI triggers page to project settings area
- Move CI project settings page to CE project settings area - Move CI project settings page to CE project settings area
- Fix bug when removed file was not appearing in merge request diff - Fix bug when removed file was not appearing in merge request diff
- Note the original location of a moved project when notifying users of the move
v 8.0.3 v 8.0.3
- Fix URL shown in Slack notifications - Fix URL shown in Slack notifications
......
...@@ -50,10 +50,11 @@ module Emails ...@@ -50,10 +50,11 @@ module Emails
subject: subject("Invitation declined")) subject: subject("Invitation declined"))
end end
def project_was_moved_email(project_id, user_id) def project_was_moved_email(project_id, user_id, old_path_with_namespace)
@current_user = @user = User.find user_id @current_user = @user = User.find user_id
@project = Project.find project_id @project = Project.find project_id
@target_url = namespace_project_url(@project.namespace, @project) @target_url = namespace_project_url(@project.namespace, @project)
@old_path_with_namespace = old_path_with_namespace
mail(to: @user.notification_email, mail(to: @user.notification_email,
subject: subject("Project was moved")) subject: subject("Project was moved"))
end end
......
...@@ -137,7 +137,9 @@ class Namespace < ActiveRecord::Base ...@@ -137,7 +137,9 @@ class Namespace < ActiveRecord::Base
end end
def send_update_instructions def send_update_instructions
projects.each(&:send_move_instructions) projects.each do |project|
project.send_move_instructions("#{path_was}/#{project.path}")
end
end end
def kind def kind
......
...@@ -481,8 +481,8 @@ class Project < ActiveRecord::Base ...@@ -481,8 +481,8 @@ class Project < ActiveRecord::Base
end end
end end
def send_move_instructions def send_move_instructions(old_path_with_namespace)
NotificationService.new.project_was_moved(self) NotificationService.new.project_was_moved(self, old_path_with_namespace)
end end
def owner def owner
...@@ -624,7 +624,7 @@ class Project < ActiveRecord::Base ...@@ -624,7 +624,7 @@ class Project < ActiveRecord::Base
# So we basically we mute exceptions in next actions # So we basically we mute exceptions in next actions
begin begin
gitlab_shell.mv_repository("#{old_path_with_namespace}.wiki", "#{new_path_with_namespace}.wiki") gitlab_shell.mv_repository("#{old_path_with_namespace}.wiki", "#{new_path_with_namespace}.wiki")
send_move_instructions send_move_instructions(old_path_with_namespace)
reset_events_cache reset_events_cache
rescue rescue
# Returning false does not rollback after_* transaction but gives # Returning false does not rollback after_* transaction but gives
......
...@@ -183,12 +183,12 @@ class NotificationService ...@@ -183,12 +183,12 @@ class NotificationService
mailer.group_access_granted_email(group_member.id) mailer.group_access_granted_email(group_member.id)
end end
def project_was_moved(project) def project_was_moved(project, old_path_with_namespace)
recipients = project.team.members recipients = project.team.members
recipients = reject_muted_users(recipients, project) recipients = reject_muted_users(recipients, project)
recipients.each do |recipient| recipients.each do |recipient|
mailer.project_was_moved_email(project.id, recipient.id) mailer.project_was_moved_email(project.id, recipient.id, old_path_with_namespace)
end end
end end
......
...@@ -38,7 +38,7 @@ module Projects ...@@ -38,7 +38,7 @@ module Projects
project.save! project.save!
# Notifications # Notifications
project.send_move_instructions project.send_move_instructions(old_path)
# Move main repository # Move main repository
unless gitlab_shell.mv_repository(old_path, new_path) unless gitlab_shell.mv_repository(old_path, new_path)
......
%p %p
Project was moved to another location Project #{@old_path_with_namespace} was moved to another location
%p %p
The project is now located under The project is now located under
= link_to namespace_project_url(@project.namespace, @project) do = link_to namespace_project_url(@project.namespace, @project) do
......
Project was moved to another location Project #{@old_path_with_namespace} was moved to another location
The project is now located under The project is now located under
<%= namespace_project_url(@project.namespace, @project) %> <%= namespace_project_url(@project.namespace, @project) %>
......
...@@ -399,7 +399,7 @@ describe Notify do ...@@ -399,7 +399,7 @@ describe Notify do
describe 'project was moved' do describe 'project was moved' do
let(:project) { create(:project) } let(:project) { create(:project) }
let(:user) { create(:user) } let(:user) { create(:user) }
subject { Notify.project_was_moved_email(project.id, user.id) } subject { Notify.project_was_moved_email(project.id, user.id, "gitlab/gitlab") }
it_behaves_like 'an email sent from GitLab' it_behaves_like 'an email sent from GitLab'
......
...@@ -427,15 +427,15 @@ describe NotificationService do ...@@ -427,15 +427,15 @@ describe NotificationService do
should_email(@u_watcher.id) should_email(@u_watcher.id)
should_email(@u_participating.id) should_email(@u_participating.id)
should_not_email(@u_disabled.id) should_not_email(@u_disabled.id)
notification.project_was_moved(project) notification.project_was_moved(project, "gitlab/gitlab")
end end
def should_email(user_id) def should_email(user_id)
expect(Notify).to receive(:project_was_moved_email).with(project.id, user_id) expect(Notify).to receive(:project_was_moved_email).with(project.id, user_id, "gitlab/gitlab")
end end
def should_not_email(user_id) def should_not_email(user_id)
expect(Notify).not_to receive(:project_was_moved_email).with(project.id, user_id) expect(Notify).not_to receive(:project_was_moved_email).with(project.id, user_id, "gitlab/gitlab")
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment