Class: Projects::TransferService
- Inherits:
-
BaseService
- Object
- BaseService
- Projects::TransferService
- Includes:
- Gitlab::ShellAdapter
- Defined in:
- app/services/projects/transfer_service.rb
Constant Summary collapse
- TransferError =
Class.new(StandardError)
Instance Attribute Summary
Attributes inherited from BaseService
#current_user, #params, #project
Instance Method Summary collapse
- #execute(new_namespace) ⇒ Object
- #log_project_transfer_error(project, new_namespace, error_message) ⇒ Object
- #log_project_transfer_success(project, new_namespace) ⇒ Object
Methods included from Gitlab::ShellAdapter
Methods inherited from BaseService
Methods included from BaseServiceUtility
#deny_visibility_level, #event_service, #log_error, #log_info, #notification_service, #system_hook_service, #todo_service, #visibility_level
Methods included from Gitlab::Allowable
Constructor Details
This class inherits a constructor from BaseService
Instance Method Details
#execute(new_namespace) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'app/services/projects/transfer_service.rb', line 24 def execute(new_namespace) @new_namespace = new_namespace if @new_namespace.blank? raise TransferError, s_('TransferProject|Please select a new namespace for your project.') end if @new_namespace.id == project.namespace_id raise TransferError, s_('TransferProject|Project is already in this namespace.') end unless allowed_transfer_project?(current_user, project) raise TransferError, s_("TransferProject|You don't have permission to transfer this project.") end unless allowed_to_transfer_to_namespace?(current_user, @new_namespace) raise TransferError, s_("TransferProject|You don't have permission to transfer projects into that namespace.") end @owner_of_personal_project_before_transfer = project.namespace.owner if project.personal? transfer(project) log_project_transfer_success(project, @new_namespace) true rescue Projects::TransferService::TransferError => ex project.reset project.errors.add(:new_namespace, ex.) log_project_transfer_error(project, @new_namespace, ex.) false end |
#log_project_transfer_error(project, new_namespace, error_message) ⇒ Object
20 21 22 |
# File 'app/services/projects/transfer_service.rb', line 20 def log_project_transfer_error(project, new_namespace, ) log_transfer(project, new_namespace, ) end |
#log_project_transfer_success(project, new_namespace) ⇒ Object
16 17 18 |
# File 'app/services/projects/transfer_service.rb', line 16 def log_project_transfer_success(project, new_namespace) log_transfer(project, new_namespace, nil) end |