Commit 75dd7042940cc6fe7532d42612e1b0db0729a86d

Authored by Dmitriy Zaporozhets
1 parent d188adfd

Send update instructions after project namespace id changed or namespace path changed

app/mailers/notify.rb
... ... @@ -102,6 +102,12 @@ class Notify < ActionMailer::Base
102 102 end
103 103  
104 104  
  105 + def project_was_moved_email(user_project_id)
  106 + @users_project = UsersProject.find user_project_id
  107 + @project = @users_project.project
  108 + mail(to: @users_project.user.email,
  109 + subject: subject("project was moved"))
  110 + end
105 111  
106 112 #
107 113 # User
... ...
app/models/namespace.rb
... ... @@ -59,7 +59,10 @@ class Namespace < ActiveRecord::Base
59 59 if File.exists?(new_path)
60 60 raise "Already exists"
61 61 end
62   - system("mv #{old_path} #{new_path}")
  62 +
  63 + if system("mv #{old_path} #{new_path}")
  64 + send_update_instructions
  65 + end
63 66 end
64 67 end
65 68  
... ... @@ -67,4 +70,8 @@ class Namespace < ActiveRecord::Base
67 70 dir_path = File.join(Gitlab.config.gitolite.repos_path, path)
68 71 system("rm -rf #{dir_path}")
69 72 end
  73 +
  74 + def send_update_instructions
  75 + projects.each(&:send_move_instructions)
  76 + end
70 77 end
... ...
app/models/project.rb
... ... @@ -259,4 +259,10 @@ class Project < ActiveRecord::Base
259 259 merge_requests
260 260 end
261 261 end
  262 +
  263 + def send_move_instructions
  264 + self.users_projects.each do |member|
  265 + Notify.project_was_moved_email(member.id).deliver
  266 + end
  267 + end
262 268 end
... ...
app/observers/project_observer.rb
... ... @@ -3,7 +3,8 @@ class ProjectObserver < ActiveRecord::Observer
3 3 project.update_repository
4 4 end
5 5  
6   - def after_save(project)
  6 + def after_update(project)
  7 + project.send_move_instructions if project.namespace_id_changed?
7 8 end
8 9  
9 10 def after_destroy(project)
... ...
app/views/notify/project_was_moved_email.html.haml 0 → 100644
... ... @@ -0,0 +1,25 @@
  1 +%td.content{align: "left", style: "font-family: Helvetica, Arial, sans-serif; padding: 20px 0 0;", valign: "top", width: "600"}
  2 + %table{border: "0", cellpadding: "0", cellspacing: "0", style: "color: #555; font: normal 11px Helvetica, Arial, sans-serif; margin: 0; padding: 0;", width: "600"}
  3 + %tr
  4 + %td{width: "21"}
  5 + %td
  6 + %h3
  7 + = "Project was moved in another location"
  8 + %td{width: "21"}
  9 + %tr
  10 + %td{width: "21"}
  11 + %td
  12 + %p
  13 + Project is now accessible via next link
  14 + = link_to project_url(@project) do
  15 + = @project.name_with_namespace
  16 + %p
  17 + You may want to update your local repository with new remote:
  18 + %br
  19 + %table{border: "0", cellpadding: "0", cellspacing: "0", width: "558"}
  20 + %tr
  21 + %td{valign: "top"}
  22 + %p{ style: "background:#f5f5f5; padding:10px; border:1px solid #ddd" }
  23 + git remote set-url origin #{@project.ssh_url_to_repo}
  24 + %br
  25 + %td{ width: "21"}
... ...