Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects')
-rw-r--r--app/services/projects/autocomplete_service.rb15
-rw-r--r--app/services/projects/create_service.rb96
-rw-r--r--app/services/projects/destroy_service.rb28
-rw-r--r--app/services/projects/fork_service.rb66
-rw-r--r--app/services/projects/participants_service.rb50
-rw-r--r--app/services/projects/transfer_service.rb74
-rw-r--r--app/services/projects/update_service.rb27
-rw-r--r--app/services/projects/upload_service.rb28
8 files changed, 0 insertions, 384 deletions
diff --git a/app/services/projects/autocomplete_service.rb b/app/services/projects/autocomplete_service.rb
deleted file mode 100644
index 7408e09ed1e..00000000000
--- a/app/services/projects/autocomplete_service.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Projects
- class AutocompleteService < BaseService
- def initialize(project)
- @project = project
- end
-
- def issues
- @project.issues.opened.select([:iid, :title])
- end
-
- def merge_requests
- @project.merge_requests.opened.select([:iid, :title])
- end
- end
-end
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
deleted file mode 100644
index a7afcf8f64b..00000000000
--- a/app/services/projects/create_service.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-module Projects
- class CreateService < BaseService
- def initialize(user, params)
- @current_user, @params = user, params.dup
- end
-
- def execute
- @project = Project.new(params)
-
- # Make sure that the user is allowed to use the specified visibility
- # level
- unless Gitlab::VisibilityLevel.allowed_for?(current_user,
- params[:visibility_level])
- deny_visibility_level(@project)
- return @project
- end
-
- # Set project name from path
- if @project.name.present? && @project.path.present?
- # if both name and path set - everything is ok
- elsif @project.path.present?
- # Set project name from path
- @project.name = @project.path.dup
- elsif @project.name.present?
- # For compatibility - set path from name
- # TODO: remove this in 8.0
- @project.path = @project.name.dup.parameterize
- end
-
- # get namespace id
- namespace_id = params[:namespace_id]
-
- if namespace_id
- # Find matching namespace and check if it allowed
- # for current user if namespace_id passed.
- unless allowed_namespace?(current_user, namespace_id)
- @project.namespace_id = nil
- deny_namespace
- return @project
- end
- else
- # Set current user namespace if namespace_id is nil
- @project.namespace_id = current_user.namespace_id
- end
-
- @project.creator = current_user
-
- Project.transaction do
- @project.save
-
- unless @project.import?
- unless @project.create_repository
- raise 'Failed to create repository'
- end
- end
- end
-
- after_create_actions if @project.persisted?
-
- @project
- rescue => ex
- @project.errors.add(:base, "Can't save project. Please try again later")
- @project
- end
-
- protected
-
- def deny_namespace
- @project.errors.add(:namespace, "is not valid")
- end
-
- def allowed_namespace?(user, namespace_id)
- namespace = Namespace.find_by(id: namespace_id)
- current_user.can?(:create_projects, namespace)
- end
-
- def after_create_actions
- log_info("#{@project.owner.name} created a new project \"#{@project.name_with_namespace}\"")
-
- @project.create_wiki if @project.wiki_enabled?
-
- event_service.create_project(@project, current_user)
- system_hook_service.execute_hooks_for(@project, :create)
-
- unless @project.group
- @project.team << [current_user, :master, current_user]
- end
-
- @project.update_column(:last_activity_at, @project.created_at)
-
- if @project.import?
- @project.import_start
- end
- end
- end
-end
diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb
deleted file mode 100644
index 7e1d753b021..00000000000
--- a/app/services/projects/destroy_service.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Projects
- class DestroyService < BaseService
- def execute
- return false unless can?(current_user, :remove_project, project)
-
- project.team.truncate
- project.repository.expire_cache unless project.empty_repo?
-
- if project.destroy
- GitlabShellWorker.perform_async(
- :remove_repository,
- project.path_with_namespace
- )
-
- GitlabShellWorker.perform_async(
- :remove_repository,
- project.path_with_namespace + ".wiki"
- )
-
- project.satellite.destroy
-
- log_info("Project \"#{project.name}\" was removed")
- system_hook_service.execute_hooks_for(project, :destroy)
- true
- end
- end
- end
-end
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
deleted file mode 100644
index 1e4deb6ed39..00000000000
--- a/app/services/projects/fork_service.rb
+++ /dev/null
@@ -1,66 +0,0 @@
-module Projects
- class ForkService < BaseService
- include Gitlab::ShellAdapter
-
- def execute
- @from_project = @project
-
- project_params = {
- visibility_level: @from_project.visibility_level,
- description: @from_project.description,
- }
-
- project = Project.new(project_params)
- project.name = @from_project.name
- project.path = @from_project.path
- project.creator = @current_user
- if @from_project.avatar.present? && @from_project.avatar.image?
- project.avatar = @from_project.avatar
- end
-
- if namespace = @params[:namespace]
- project.namespace = namespace
- else
- project.namespace = @current_user.namespace
- end
-
- unless @current_user.can?(:create_projects, project.namespace)
- project.errors.add(:namespace, 'insufficient access rights')
- return project
- end
-
- # If the project cannot save, we do not want to trigger the project destroy
- # as this can have the side effect of deleting a repo attached to an existing
- # project with the same name and namespace
- if project.valid?
- begin
- Project.transaction do
- #First save the DB entries as they can be rolled back if the repo fork fails
- project.build_forked_project_link(forked_to_project_id: project.id, forked_from_project_id: @from_project.id)
- if project.save
- project.team << [@current_user, :master, @current_user]
- end
-
- #Now fork the repo
- unless gitlab_shell.fork_repository(@from_project.path_with_namespace, project.namespace.path)
- raise 'forking failed in gitlab-shell'
- end
-
- project.ensure_satellite_exists
- end
-
- if @from_project.gitlab_ci?
- ForkRegistrationWorker.perform_async(@from_project.id, project.id, @current_user.private_token)
- end
- rescue => ex
- project.errors.add(:base, 'Fork transaction failed.')
- project.destroy
- end
- else
- project.errors.add(:base, 'Invalid fork destination')
- end
-
- project
- end
- end
-end
diff --git a/app/services/projects/participants_service.rb b/app/services/projects/participants_service.rb
deleted file mode 100644
index ae6260bcdab..00000000000
--- a/app/services/projects/participants_service.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-module Projects
- class ParticipantsService < BaseService
- def execute(note_type, note_id)
- participating =
- if note_type && note_id
- participants_in(note_type, note_id)
- else
- []
- end
- project_members = sorted(project.team.members)
- participants = all_members + groups + project_members + participating
- participants.uniq
- end
-
- def participants_in(type, id)
- users = case type
- when "Issue"
- issue = project.issues.find_by_iid(id)
- issue ? issue.participants(current_user) : []
- when "MergeRequest"
- merge_request = project.merge_requests.find_by_iid(id)
- merge_request ? merge_request.participants(current_user) : []
- when "Commit"
- author_ids = Note.for_commit_id(id).pluck(:author_id).uniq
- User.where(id: author_ids)
- else
- []
- end
- sorted(users)
- end
-
- def sorted(users)
- users.uniq.to_a.compact.sort_by(&:username).map do |user|
- { username: user.username, name: user.name }
- end
- end
-
- def groups
- current_user.authorized_groups.sort_by(&:path).map do |group|
- count = group.users.count
- { username: group.path, name: "#{group.name} (#{count})" }
- end
- end
-
- def all_members
- count = project.team.members.flatten.count
- [{ username: "all", name: "All Project and Group Members (#{count})" }]
- end
- end
-end
diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb
deleted file mode 100644
index 489e03bd5ef..00000000000
--- a/app/services/projects/transfer_service.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-# Projects::TransferService class
-#
-# Used for transfer project to another namespace
-#
-# Ex.
-# # Move projects to namespace with ID 17 by user
-# Projects::TransferService.new(project, user, namespace_id: 17).execute
-#
-module Projects
- class TransferService < BaseService
- include Gitlab::ShellAdapter
- class TransferError < StandardError; end
-
- def execute
- namespace_id = params[:new_namespace_id]
- namespace = Namespace.find_by(id: namespace_id)
-
- if allowed_transfer?(current_user, project, namespace)
- transfer(project, namespace)
- else
- project.errors.add(:namespace, 'is invalid')
- false
- end
- rescue Projects::TransferService::TransferError => ex
- project.reload
- project.errors.add(:namespace_id, ex.message)
- false
- end
-
- def transfer(project, new_namespace)
- Project.transaction do
- old_path = project.path_with_namespace
- new_path = File.join(new_namespace.try(:path) || '', project.path)
-
- if Project.where(path: project.path, namespace_id: new_namespace.try(:id)).present?
- raise TransferError.new("Project with same path in target namespace already exists")
- end
-
- # Remove old satellite
- project.satellite.destroy
-
- # Apply new namespace id
- project.namespace = new_namespace
- project.save!
-
- # Notifications
- project.send_move_instructions
-
- # Move main repository
- unless gitlab_shell.mv_repository(old_path, new_path)
- raise TransferError.new('Cannot move project')
- end
-
- # Move wiki repo also if present
- gitlab_shell.mv_repository("#{old_path}.wiki", "#{new_path}.wiki")
-
- # Create a new satellite (reload project from DB)
- Project.find(project.id).ensure_satellite_exists
-
- # clear project cached events
- project.reset_events_cache
-
- true
- end
- end
-
- def allowed_transfer?(current_user, project, namespace)
- namespace &&
- can?(current_user, :change_namespace, project) &&
- namespace.id != project.namespace_id &&
- current_user.can?(:create_projects, namespace)
- end
- end
-end
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb
deleted file mode 100644
index 69bdd045ddf..00000000000
--- a/app/services/projects/update_service.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-module Projects
- class UpdateService < BaseService
- def execute
- # check that user is allowed to set specified visibility_level
- new_visibility = params[:visibility_level]
- if new_visibility && new_visibility.to_i != project.visibility_level
- unless can?(current_user, :change_visibility_level, project) &&
- Gitlab::VisibilityLevel.allowed_for?(current_user, new_visibility)
- deny_visibility_level(project, new_visibility)
- return project
- end
- end
-
- new_branch = params[:default_branch]
-
- if project.repository.exists? && new_branch && new_branch != project.default_branch
- project.change_head(new_branch)
- end
-
- if project.update_attributes(params.except(:default_branch))
- if project.previous_changes.include?('path')
- project.rename_repo
- end
- end
- end
- end
-end
diff --git a/app/services/projects/upload_service.rb b/app/services/projects/upload_service.rb
deleted file mode 100644
index 992a7a7a1dc..00000000000
--- a/app/services/projects/upload_service.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-module Projects
- class UploadService < BaseService
- def initialize(project, file)
- @project, @file = project, file
- end
-
- def execute
- return nil unless @file and @file.size <= max_attachment_size
-
- uploader = FileUploader.new(@project)
- uploader.store!(@file)
-
- filename = uploader.image? ? uploader.file.basename : uploader.file.filename
-
- {
- 'alt' => filename,
- 'url' => uploader.secure_url,
- 'is_image' => uploader.image?
- }
- end
-
- private
-
- def max_attachment_size
- current_application_settings.max_attachment_size.megabytes.to_i
- end
- end
-end