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)
Constants inherited from BaseService
BaseService::UnauthorizedError
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
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 58 |
# File 'app/services/projects/transfer_service.rb', line 25 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
21 22 23 |
# File 'app/services/projects/transfer_service.rb', line 21 def log_project_transfer_error(project, new_namespace, ) log_transfer(project, new_namespace, ) end |
#log_project_transfer_success(project, new_namespace) ⇒ Object
17 18 19 |
# File 'app/services/projects/transfer_service.rb', line 17 def log_project_transfer_success(project, new_namespace) log_transfer(project, new_namespace, nil) end |