From cf8b465cb96f5aa6e53fec60c0d6e62ad1ccbc5e Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 19 Jun 2013 18:32:08 +0300 Subject: [PATCH] Remove Global namespace from options. Prepared file for migration of global projects --- app/contexts/projects/create_context.rb | 10 +++------- app/contexts/projects/transfer_context.rb | 7 +------ app/controllers/admin/projects_controller.rb | 1 - app/helpers/namespaces_helper.rb | 1 - app/views/projects/edit.html.haml | 2 +- lib/tasks/migrate/migrate_global_projects.rake | 12 ++++++++++++ 6 files changed, 17 insertions(+), 16 deletions(-) create mode 100644 lib/tasks/migrate/migrate_global_projects.rake diff --git a/app/contexts/projects/create_context.rb b/app/contexts/projects/create_context.rb index d3b8dee39..4045fe15a 100644 --- a/app/contexts/projects/create_context.rb +++ b/app/contexts/projects/create_context.rb @@ -33,7 +33,7 @@ module Projects # Find matching namespace and check if it allowed # for current user if namespace_id passed. if allowed_namespace?(current_user, namespace_id) - @project.namespace_id = namespace_id unless namespace_id == Namespace.global_id + @project.namespace_id = namespace_id else deny_namespace return @project @@ -75,12 +75,8 @@ module Projects end def allowed_namespace?(user, namespace_id) - if namespace_id == Namespace.global_id - return user.admin - else - namespace = Namespace.find_by_id(namespace_id) - current_user.can?(:manage_namespace, namespace) - end + namespace = Namespace.find_by_id(namespace_id) + current_user.can?(:manage_namespace, namespace) end end end diff --git a/app/contexts/projects/transfer_context.rb b/app/contexts/projects/transfer_context.rb index aed396a5d..3011984e3 100644 --- a/app/contexts/projects/transfer_context.rb +++ b/app/contexts/projects/transfer_context.rb @@ -5,12 +5,7 @@ module Projects allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin if allowed_transfer && namespace_id.present? - if namespace_id == Namespace.global_id - if project.namespace.present? - # Transfer to global namespace from anyone - project.transfer(nil) - end - elsif namespace_id.to_i != project.namespace_id + if namespace_id.to_i != project.namespace_id # Transfer to someone namespace namespace = Namespace.find(namespace_id) project.transfer(namespace) diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index a63c4694a..e73a54dd1 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -9,7 +9,6 @@ class Admin::ProjectsController < Admin::ApplicationController @projects = @projects.where(public: true) if params[:public_only].present? @projects = @projects.with_push if params[:with_push].present? @projects = @projects.abandoned if params[:abandoned].present? - @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id @projects = @projects.search(params[:name]) if params[:name].present? @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) end diff --git a/app/helpers/namespaces_helper.rb b/app/helpers/namespaces_helper.rb index 69ad3de50..a6fcf8d8c 100644 --- a/app/helpers/namespaces_helper.rb +++ b/app/helpers/namespaces_helper.rb @@ -3,7 +3,6 @@ module NamespacesHelper groups = current_user.owned_groups.select {|n| n.type == 'Group'} users = current_user.namespaces.reject {|n| n.type == 'Group'} - global_opts = ["Global", [['/', Namespace.global_id]] ] group_opts = ["Groups", groups.sort_by(&:human_name).map {|g| [g.human_name, g.id]} ] users_opts = [ "Users", users.sort_by(&:human_name).map {|u| [u.human_name, u.id]} ] diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml index bec64bf6c..43199bc3d 100644 --- a/app/views/projects/edit.html.haml +++ b/app/views/projects/edit.html.haml @@ -129,7 +129,7 @@ %span Namespace .controls .clearfix - = f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'} + = f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'} %ul %li Be careful. Changing project namespace can have unintended side effects %li You can transfer project only to namespaces you can manage diff --git a/lib/tasks/migrate/migrate_global_projects.rake b/lib/tasks/migrate/migrate_global_projects.rake new file mode 100644 index 000000000..f2f74723c --- /dev/null +++ b/lib/tasks/migrate/migrate_global_projects.rake @@ -0,0 +1,12 @@ +desc "GITLAB | Migrate Global Projects to Namespaces" +task migrate_global_projects: :environment do + puts "This will move all projects without namespace to owner namespace" + ask_to_continue + + Project.where(namespace_id: nil).find_each(batch_size: 20) do |project| + + # TODO: transfer code here + print '.' + end +end + -- 2.11.0