Commit 1fb99264a99e5fbe03b9ccef42ac8c4f07575d8c

Authored by Dmitriy Zaporozhets
1 parent 850881a2

Use TransferContext for project

app/contexts/projects/transfer_context.rb 0 → 100644
... ... @@ -0,0 +1,27 @@
  1 +module Projects
  2 + class TransferContext < BaseContext
  3 + def execute(role = :default)
  4 + namespace_id = params[:project].delete(:namespace_id)
  5 + allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
  6 +
  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
  14 + # Transfer to someone namespace
  15 + namespace = Namespace.find(namespace_id)
  16 + project.transfer(namespace)
  17 + end
  18 + end
  19 +
  20 + rescue ProjectTransferService::TransferError => ex
  21 + project.reload
  22 + project.errors.add(:namespace_id, ex.message)
  23 + false
  24 + end
  25 + end
  26 +end
  27 +
... ...
app/views/projects/transfer.js.haml 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +- if @project.errors[:namespace_id].present?
  2 + :plain
  3 + $("#tab-transfer .errors-holder").replaceWith(errorMessage('#{escape_javascript(@project.errors[:namespace_id].first)}'));
  4 + $("#tab-transfer .form-actions input").removeAttr('disabled').removeClass('disabled');
  5 +- else
  6 + :plain
  7 + location.href = "#{edit_project_path(@project)}";
... ...