From 75dd7042940cc6fe7532d42612e1b0db0729a86d Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 20 Dec 2012 22:16:51 +0200 Subject: [PATCH] Send update instructions after project namespace id changed or namespace path changed --- app/mailers/notify.rb | 6 +++++ app/models/namespace.rb | 9 ++++++- app/models/project.rb | 6 +++++ app/observers/project_observer.rb | 3 ++- .../notify/project_was_moved_email.html.haml | 25 +++++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 app/views/notify/project_was_moved_email.html.haml diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb index f954a05c883..ab35677fb64 100644 --- a/app/mailers/notify.rb +++ b/app/mailers/notify.rb @@ -102,6 +102,12 @@ class Notify < ActionMailer::Base end + def project_was_moved_email(user_project_id) + @users_project = UsersProject.find user_project_id + @project = @users_project.project + mail(to: @users_project.user.email, + subject: subject("project was moved")) + end # # User diff --git a/app/models/namespace.rb b/app/models/namespace.rb index 3c087e26c19..8c90f5aee26 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -59,7 +59,10 @@ class Namespace < ActiveRecord::Base if File.exists?(new_path) raise "Already exists" end - system("mv #{old_path} #{new_path}") + + if system("mv #{old_path} #{new_path}") + send_update_instructions + end end end @@ -67,4 +70,8 @@ class Namespace < ActiveRecord::Base dir_path = File.join(Gitlab.config.gitolite.repos_path, path) system("rm -rf #{dir_path}") end + + def send_update_instructions + projects.each(&:send_move_instructions) + end end diff --git a/app/models/project.rb b/app/models/project.rb index 6a427fddfac..3e5c912e0b4 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -259,4 +259,10 @@ class Project < ActiveRecord::Base merge_requests end end + + def send_move_instructions + self.users_projects.each do |member| + Notify.project_was_moved_email(member.id).deliver + end + end end diff --git a/app/observers/project_observer.rb b/app/observers/project_observer.rb index bd41e51e8e4..b1c694569d7 100644 --- a/app/observers/project_observer.rb +++ b/app/observers/project_observer.rb @@ -3,7 +3,8 @@ class ProjectObserver < ActiveRecord::Observer project.update_repository end - def after_save(project) + def after_update(project) + project.send_move_instructions if project.namespace_id_changed? end def after_destroy(project) diff --git a/app/views/notify/project_was_moved_email.html.haml b/app/views/notify/project_was_moved_email.html.haml new file mode 100644 index 00000000000..e81ae70ba5a --- /dev/null +++ b/app/views/notify/project_was_moved_email.html.haml @@ -0,0 +1,25 @@ +%td.content{align: "left", style: "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", valign: "top", width: "600"} + %table{border: "0", cellpadding: "0", cellspacing: "0", style: "color: #555; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", width: "600"} + %tr + %td{width: "21"} + %td + %h3 + = "Project was moved in another location" + %td{width: "21"} + %tr + %td{width: "21"} + %td + %p + Project is now accessible via next link + = link_to project_url(@project) do + = @project.name_with_namespace + %p + You may want to update your local repository with new remote: + %br + %table{border: "0", cellpadding: "0", cellspacing: "0", width: "558"} + %tr + %td{valign: "top"} + %p{ style: "background:#f5f5f5; padding:10px; border:1px solid #ddd" } + git remote set-url origin #{@project.ssh_url_to_repo} + %br + %td{ width: "21"}