summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-25 10:48:30 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-03-25 10:48:30 +0200
commite292d7c17b48182f7f8df20d93b92e8ba9e98ce6 (patch)
treee55825c995795b79bb83083defd8ebb8eacd049c /app
parentff35b37fd2df3b4bdcb9f1b7448d98df07237d08 (diff)
downloadgitlab-ce-e292d7c17b48182f7f8df20d93b92e8ba9e98ce6.tar.gz
Make transfer action in project controller
Diffstat (limited to 'app')
-rw-r--r--app/contexts/projects/update_context.rb18
-rw-r--r--app/controllers/projects_controller.rb8
-rw-r--r--app/models/project.rb2
-rw-r--r--app/views/projects/_form.html.haml3
-rw-r--r--app/views/projects/update_failed.js.haml2
5 files changed, 7 insertions, 26 deletions
diff --git a/app/contexts/projects/update_context.rb b/app/contexts/projects/update_context.rb
index e5d09b7df7f..40385fa65b0 100644
--- a/app/contexts/projects/update_context.rb
+++ b/app/contexts/projects/update_context.rb
@@ -1,24 +1,8 @@
module Projects
class UpdateContext < BaseContext
def execute(role = :default)
- namespace_id = params[:project].delete(:namespace_id)
+ params[:project].delete(:namespace_id)
params[:project].delete(:public) unless can?(current_user, :change_public_mode, project)
-
- 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
- # Transfer to someone namespace
- namespace = Namespace.find(namespace_id)
- project.transfer(namespace)
- end
- end
-
project.update_attributes(params[:project], as: role)
end
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index f2718344a3d..5b17e1ab2cd 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -4,7 +4,7 @@ class ProjectsController < ProjectResourceController
# Authorize
before_filter :authorize_read_project!, except: [:index, :new, :create]
- before_filter :authorize_admin_project!, only: [:edit, :update, :destroy]
+ before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer]
before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
layout 'application', only: [:new, :create]
@@ -45,10 +45,10 @@ class ProjectsController < ProjectResourceController
format.js
end
end
+ end
- rescue Project::TransferError => ex
- @error = ex
- render :update_failed
+ def transfer
+ ::Projects::TransferContext.new(project, current_user, params).execute
end
def show
diff --git a/app/models/project.rb b/app/models/project.rb
index 23eb7f90194..0bb1003a129 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -26,8 +26,6 @@ class Project < ActiveRecord::Base
include Gitlab::ShellAdapter
extend Enumerize
- class TransferError < StandardError; end
-
attr_accessible :name, :path, :description, :default_branch, :issues_tracker,
:issues_enabled, :wall_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id,
:wiki_enabled, :public, :import_url, as: [:default, :admin]
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
index 6d547c94e98..01fb6a67e5f 100644
--- a/app/views/projects/_form.html.haml
+++ b/app/views/projects/_form.html.haml
@@ -107,8 +107,9 @@
- if can?(current_user, :change_namespace, @project)
.ui-box.ui-box-danger
%h5.title Transfer project
+ .errors-holder
.form-holder
- = form_for(@project, remote: true, html: { class: 'transfer-project' }) do |f|
+ = form_for(@project, url: transfer_project_path(@project), remote: true, html: { class: 'transfer-project' }) do |f|
.control-group
= f.label :namespace_id do
%span Namespace
diff --git a/app/views/projects/update_failed.js.haml b/app/views/projects/update_failed.js.haml
deleted file mode 100644
index a3ac5f4088f..00000000000
--- a/app/views/projects/update_failed.js.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-:plain
- $(".save-project-loader").replaceWith(errorMessage('#{escape_javascript(@error.message)}'));