diff options
Diffstat (limited to 'app/contexts/projects')
-rw-r--r-- | app/contexts/projects/create_context.rb | 80 | ||||
-rw-r--r-- | app/contexts/projects/fork_context.rb | 44 | ||||
-rw-r--r-- | app/contexts/projects/transfer_context.rb | 22 | ||||
-rw-r--r-- | app/contexts/projects/update_context.rb | 19 |
4 files changed, 0 insertions, 165 deletions
diff --git a/app/contexts/projects/create_context.rb b/app/contexts/projects/create_context.rb deleted file mode 100644 index 2acb9fbfe14..00000000000 --- a/app/contexts/projects/create_context.rb +++ /dev/null @@ -1,80 +0,0 @@ -module Projects - class CreateContext < BaseContext - def initialize(user, params) - @current_user, @params = user, params.dup - end - - def execute - # get namespace id - namespace_id = params.delete(:namespace_id) - - # check that user is allowed to set specified visibility_level - unless Gitlab::VisibilityLevel.allowed_for?(current_user, params[:visibility_level]) - params.delete(:visibility_level) - end - - # Load default feature settings - default_features = Gitlab.config.gitlab.default_projects_features - - default_opts = { - issues_enabled: default_features.issues, - wiki_enabled: default_features.wiki, - wall_enabled: default_features.wall, - snippets_enabled: default_features.snippets, - merge_requests_enabled: default_features.merge_requests, - visibility_level: default_features.visibility_level - }.stringify_keys - - @project = Project.new(default_opts.merge(params)) - - # Parametrize path for project - # - # Ex. - # 'GitLab HQ'.parameterize => "gitlab-hq" - # - @project.path = @project.name.dup.parameterize unless @project.path.present? - - - if namespace_id - # Find matching namespace and check if it allowed - # for current user if namespace_id passed. - if allowed_namespace?(current_user, namespace_id) - @project.namespace_id = namespace_id - else - 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 - - if @project.save - unless @project.group - @project.users_projects.create( - project_access: UsersProject::MASTER, - user: current_user - ) - end - end - - @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?(:manage_namespace, namespace) - end - end -end diff --git a/app/contexts/projects/fork_context.rb b/app/contexts/projects/fork_context.rb deleted file mode 100644 index fbc67220d5d..00000000000 --- a/app/contexts/projects/fork_context.rb +++ /dev/null @@ -1,44 +0,0 @@ -module Projects - class ForkContext < BaseContext - include Gitlab::ShellAdapter - - def initialize(project, user) - @from_project, @current_user = project, user - end - - def execute - project = @from_project.dup - project.name = @from_project.name - project.path = @from_project.path - project.namespace = current_user.namespace - project.creator = current_user - - # 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.users_projects.create(project_access: UsersProject::MASTER, user: 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 - 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/contexts/projects/transfer_context.rb b/app/contexts/projects/transfer_context.rb deleted file mode 100644 index 3011984e3f8..00000000000 --- a/app/contexts/projects/transfer_context.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Projects - class TransferContext < BaseContext - def execute(role = :default) - namespace_id = params[:project].delete(:namespace_id) - allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin - - if allowed_transfer && namespace_id.present? - if namespace_id.to_i != project.namespace_id - # Transfer to someone namespace - namespace = Namespace.find(namespace_id) - project.transfer(namespace) - end - end - - rescue ProjectTransferService::TransferError => ex - project.reload - project.errors.add(:namespace_id, ex.message) - false - end - end -end - diff --git a/app/contexts/projects/update_context.rb b/app/contexts/projects/update_context.rb deleted file mode 100644 index 94de10de0f6..00000000000 --- a/app/contexts/projects/update_context.rb +++ /dev/null @@ -1,19 +0,0 @@ -module Projects - class UpdateContext < BaseContext - def execute(role = :default) - params[:project].delete(:namespace_id) - # check that user is allowed to set specified visibility_level - unless can?(current_user, :change_visibility_level, project) && Gitlab::VisibilityLevel.allowed_for?(current_user, params[:project][:visibility_level]) - params[:project].delete(:visibility_level) - end - - new_branch = params[:project].delete(:default_branch) - - if project.repository.exists? && new_branch && new_branch != project.default_branch - project.change_head(new_branch) - end - - project.update_attributes(params[:project], as: role) - end - end -end |