Commit 26622f4c8f96910b0f14e73bdebfb8198c693912
1 parent
a4d1bc17
Exists in
master
and in
4 other branches
Improve routing. Project access via namespace
Showing
4 changed files
with
21 additions
and
8 deletions
Show diff stats
app/controllers/application_controller.rb
@@ -63,7 +63,10 @@ class ApplicationController < ActionController::Base | @@ -63,7 +63,10 @@ class ApplicationController < ActionController::Base | ||
63 | end | 63 | end |
64 | 64 | ||
65 | def project | 65 | def project |
66 | - @project ||= current_user.projects.find_by_code(params[:project_id] || params[:id]) | 66 | + id = params[:project_id] || params[:id] |
67 | + id = id.split("/") if id.include?("/") | ||
68 | + | ||
69 | + @project ||= current_user.projects.find_by_code(id) | ||
67 | @project || render_404 | 70 | @project || render_404 |
68 | end | 71 | end |
69 | 72 |
app/models/project.rb
@@ -135,7 +135,11 @@ class Project < ActiveRecord::Base | @@ -135,7 +135,11 @@ class Project < ActiveRecord::Base | ||
135 | end | 135 | end |
136 | 136 | ||
137 | def to_param | 137 | def to_param |
138 | - code | 138 | + if namespace |
139 | + namespace.code + "/" + code | ||
140 | + else | ||
141 | + code | ||
142 | + end | ||
139 | end | 143 | end |
140 | 144 | ||
141 | def web_url | 145 | def web_url |
@@ -201,4 +205,7 @@ class Project < ActiveRecord::Base | @@ -201,4 +205,7 @@ class Project < ActiveRecord::Base | ||
201 | path | 205 | path |
202 | end | 206 | end |
203 | end | 207 | end |
208 | + | ||
209 | + def move_repo | ||
210 | + end | ||
204 | end | 211 | end |
app/observers/project_observer.rb
1 | class ProjectObserver < ActiveRecord::Observer | 1 | class ProjectObserver < ActiveRecord::Observer |
2 | - def after_save(project) | ||
3 | - project.update_repository | ||
4 | - | 2 | + def before_save(project) |
5 | # Move repository if namespace changed | 3 | # Move repository if namespace changed |
6 | if project.namespace_id_changed? | 4 | if project.namespace_id_changed? |
7 | move_project(project) | 5 | move_project(project) |
8 | end | 6 | end |
9 | end | 7 | end |
10 | 8 | ||
9 | + def after_save(project) | ||
10 | + project.update_repository | ||
11 | + end | ||
12 | + | ||
11 | def after_destroy(project) | 13 | def after_destroy(project) |
12 | log_info("Project \"#{project.name}\" was removed") | 14 | log_info("Project \"#{project.name}\" was removed") |
13 | 15 | ||
@@ -35,7 +37,8 @@ class ProjectObserver < ActiveRecord::Observer | @@ -35,7 +37,8 @@ class ProjectObserver < ActiveRecord::Observer | ||
35 | old_path = File.join(Gitlab.config.git_base_path, old_dir, "#{project.path}.git") | 37 | old_path = File.join(Gitlab.config.git_base_path, old_dir, "#{project.path}.git") |
36 | new_path = File.join(new_dir_path, "#{project.path}.git") | 38 | new_path = File.join(new_dir_path, "#{project.path}.git") |
37 | 39 | ||
38 | - binding.pry | ||
39 | `mv #{old_path} #{new_path}` | 40 | `mv #{old_path} #{new_path}` |
41 | + | ||
42 | + log_info "Project #{project.name} was moved from #{old_path} to #{new_path}" | ||
40 | end | 43 | end |
41 | end | 44 | end |
config/routes.rb
@@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do | @@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do | ||
18 | project_root: Gitlab.config.git_base_path, | 18 | project_root: Gitlab.config.git_base_path, |
19 | upload_pack: Gitlab.config.git_upload_pack, | 19 | upload_pack: Gitlab.config.git_upload_pack, |
20 | receive_pack: Gitlab.config.git_receive_pack | 20 | receive_pack: Gitlab.config.git_receive_pack |
21 | - }), at: '/:path', constraints: { path: /[\w\.-]+\.git/ } | 21 | + }), at: '/:path', constraints: { path: /[-\/\w\.-]+\.git/ } |
22 | 22 | ||
23 | # | 23 | # |
24 | # Help | 24 | # Help |
@@ -107,7 +107,7 @@ Gitlab::Application.routes.draw do | @@ -107,7 +107,7 @@ Gitlab::Application.routes.draw do | ||
107 | # | 107 | # |
108 | # Project Area | 108 | # Project Area |
109 | # | 109 | # |
110 | - resources :projects, constraints: { id: /[^\/]+/ }, except: [:new, :create, :index], path: "/" do | 110 | + resources :projects, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do |
111 | member do | 111 | member do |
112 | get "wall" | 112 | get "wall" |
113 | get "graph" | 113 | get "graph" |