Commit cf8b465cb96f5aa6e53fec60c0d6e62ad1ccbc5e

Authored by Dmitriy Zaporozhets
1 parent 6e35acef

Remove Global namespace from options. Prepared file for migration of global projects

app/contexts/projects/create_context.rb
... ... @@ -33,7 +33,7 @@ module Projects
33 33 # Find matching namespace and check if it allowed
34 34 # for current user if namespace_id passed.
35 35 if allowed_namespace?(current_user, namespace_id)
36   - @project.namespace_id = namespace_id unless namespace_id == Namespace.global_id
  36 + @project.namespace_id = namespace_id
37 37 else
38 38 deny_namespace
39 39 return @project
... ... @@ -75,12 +75,8 @@ module Projects
75 75 end
76 76  
77 77 def allowed_namespace?(user, namespace_id)
78   - if namespace_id == Namespace.global_id
79   - return user.admin
80   - else
81   - namespace = Namespace.find_by_id(namespace_id)
82   - current_user.can?(:manage_namespace, namespace)
83   - end
  78 + namespace = Namespace.find_by_id(namespace_id)
  79 + current_user.can?(:manage_namespace, namespace)
84 80 end
85 81 end
86 82 end
... ...
app/contexts/projects/transfer_context.rb
... ... @@ -5,12 +5,7 @@ module Projects
5 5 allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
6 6  
7 7 if allowed_transfer && namespace_id.present?
8   - if namespace_id == Namespace.global_id
9   - if project.namespace.present?
10   - # Transfer to global namespace from anyone
11   - project.transfer(nil)
12   - end
13   - elsif namespace_id.to_i != project.namespace_id
  8 + if namespace_id.to_i != project.namespace_id
14 9 # Transfer to someone namespace
15 10 namespace = Namespace.find(namespace_id)
16 11 project.transfer(namespace)
... ...
app/controllers/admin/projects_controller.rb
... ... @@ -9,7 +9,6 @@ class Admin::ProjectsController < Admin::ApplicationController
9 9 @projects = @projects.where(public: true) if params[:public_only].present?
10 10 @projects = @projects.with_push if params[:with_push].present?
11 11 @projects = @projects.abandoned if params[:abandoned].present?
12   - @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id
13 12 @projects = @projects.search(params[:name]) if params[:name].present?
14 13 @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20)
15 14 end
... ...
app/helpers/namespaces_helper.rb
... ... @@ -3,7 +3,6 @@ module NamespacesHelper
3 3 groups = current_user.owned_groups.select {|n| n.type == 'Group'}
4 4 users = current_user.namespaces.reject {|n| n.type == 'Group'}
5 5  
6   - global_opts = ["Global", [['/', Namespace.global_id]] ]
7 6 group_opts = ["Groups", groups.sort_by(&:human_name).map {|g| [g.human_name, g.id]} ]
8 7 users_opts = [ "Users", users.sort_by(&:human_name).map {|u| [u.human_name, u.id]} ]
9 8  
... ...
app/views/projects/edit.html.haml
... ... @@ -129,7 +129,7 @@
129 129 %span Namespace
130 130 .controls
131 131 .clearfix
132   - = f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
  132 + = f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
133 133 %ul
134 134 %li Be careful. Changing project namespace can have unintended side effects
135 135 %li You can transfer project only to namespaces you can manage
... ...
lib/tasks/migrate/migrate_global_projects.rake 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +desc "GITLAB | Migrate Global Projects to Namespaces"
  2 +task migrate_global_projects: :environment do
  3 + puts "This will move all projects without namespace to owner namespace"
  4 + ask_to_continue
  5 +
  6 + Project.where(namespace_id: nil).find_each(batch_size: 20) do |project|
  7 +
  8 + # TODO: transfer code here
  9 + print '.'
  10 + end
  11 +end
  12 +
... ...