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 | 63 | end |
64 | 64 | |
65 | 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 | 70 | @project || render_404 |
68 | 71 | end |
69 | 72 | ... | ... |
app/models/project.rb
... | ... | @@ -135,7 +135,11 @@ class Project < ActiveRecord::Base |
135 | 135 | end |
136 | 136 | |
137 | 137 | def to_param |
138 | - code | |
138 | + if namespace | |
139 | + namespace.code + "/" + code | |
140 | + else | |
141 | + code | |
142 | + end | |
139 | 143 | end |
140 | 144 | |
141 | 145 | def web_url |
... | ... | @@ -201,4 +205,7 @@ class Project < ActiveRecord::Base |
201 | 205 | path |
202 | 206 | end |
203 | 207 | end |
208 | + | |
209 | + def move_repo | |
210 | + end | |
204 | 211 | end | ... | ... |
app/observers/project_observer.rb
1 | 1 | class ProjectObserver < ActiveRecord::Observer |
2 | - def after_save(project) | |
3 | - project.update_repository | |
4 | - | |
2 | + def before_save(project) | |
5 | 3 | # Move repository if namespace changed |
6 | 4 | if project.namespace_id_changed? |
7 | 5 | move_project(project) |
8 | 6 | end |
9 | 7 | end |
10 | 8 | |
9 | + def after_save(project) | |
10 | + project.update_repository | |
11 | + end | |
12 | + | |
11 | 13 | def after_destroy(project) |
12 | 14 | log_info("Project \"#{project.name}\" was removed") |
13 | 15 | |
... | ... | @@ -35,7 +37,8 @@ class ProjectObserver < ActiveRecord::Observer |
35 | 37 | old_path = File.join(Gitlab.config.git_base_path, old_dir, "#{project.path}.git") |
36 | 38 | new_path = File.join(new_dir_path, "#{project.path}.git") |
37 | 39 | |
38 | - binding.pry | |
39 | 40 | `mv #{old_path} #{new_path}` |
41 | + | |
42 | + log_info "Project #{project.name} was moved from #{old_path} to #{new_path}" | |
40 | 43 | end |
41 | 44 | end | ... | ... |
config/routes.rb
... | ... | @@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do |
18 | 18 | project_root: Gitlab.config.git_base_path, |
19 | 19 | upload_pack: Gitlab.config.git_upload_pack, |
20 | 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 | 24 | # Help |
... | ... | @@ -107,7 +107,7 @@ Gitlab::Application.routes.draw do |
107 | 107 | # |
108 | 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 | 111 | member do |
112 | 112 | get "wall" |
113 | 113 | get "graph" | ... | ... |