diff options
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/ci/register_job_service.rb | 14 | ||||
-rw-r--r-- | app/services/issues/base_service.rb | 5 | ||||
-rw-r--r-- | app/services/labels/find_or_create_service.rb | 8 | ||||
-rw-r--r-- | app/services/projects/create_service.rb | 16 | ||||
-rw-r--r-- | app/services/todo_service.rb | 30 |
5 files changed, 48 insertions, 25 deletions
diff --git a/app/services/ci/register_job_service.rb b/app/services/ci/register_job_service.rb index 9bdbb2c0d99..6eb1c4f52de 100644 --- a/app/services/ci/register_job_service.rb +++ b/app/services/ci/register_job_service.rb @@ -13,9 +13,9 @@ module Ci @runner = runner end - def execute + def execute(params = {}) builds = - if runner.shared? + if runner.instance_type? builds_for_shared_runner elsif runner.group_type? builds_for_group_runner @@ -41,6 +41,8 @@ module Ci # with StateMachines::InvalidTransition or StaleObjectError when doing run! or save method. begin build.runner_id = runner.id + build.runner_session_attributes = params[:session] if params[:session].present? + build.run! register_success(build) @@ -99,7 +101,7 @@ module Ci end def running_builds_for_shared_runners - Ci::Build.running.where(runner: Ci::Runner.shared) + Ci::Build.running.where(runner: Ci::Runner.instance_type) .group(:project_id).select(:project_id, 'count(*) AS running_builds') end @@ -115,7 +117,7 @@ module Ci end def register_success(job) - labels = { shared_runner: runner.shared?, + labels = { shared_runner: runner.instance_type?, jobs_running_for_project: jobs_running_for_project(job) } job_queue_duration_seconds.observe(labels, Time.now - job.queued_at) unless job.queued_at.nil? @@ -123,10 +125,10 @@ module Ci end def jobs_running_for_project(job) - return '+Inf' unless runner.shared? + return '+Inf' unless runner.instance_type? # excluding currently started job - running_jobs_count = job.project.builds.running.where(runner: Ci::Runner.shared) + running_jobs_count = job.project.builds.running.where(runner: Ci::Runner.instance_type) .limit(JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET + 1).count - 1 running_jobs_count < JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET ? running_jobs_count : "#{JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET}+" end diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb index 9f6cfc0f6d3..cbfef175af0 100644 --- a/app/services/issues/base_service.rb +++ b/app/services/issues/base_service.rb @@ -32,8 +32,9 @@ module Issues def filter_assignee(issuable) return if params[:assignee_ids].blank? - # The number of assignees is limited by one for GitLab CE - params[:assignee_ids] = params[:assignee_ids][0, 1] + unless issuable.allows_multiple_assignees? + params[:assignee_ids] = params[:assignee_ids].take(1) + end assignee_ids = params[:assignee_ids].select { |assignee_id| assignee_can_read?(issuable, assignee_id) } diff --git a/app/services/labels/find_or_create_service.rb b/app/services/labels/find_or_create_service.rb index 079f611b3f3..a72da3c637f 100644 --- a/app/services/labels/find_or_create_service.rb +++ b/app/services/labels/find_or_create_service.rb @@ -20,6 +20,7 @@ module Labels @available_labels ||= LabelsFinder.new( current_user, "#{parent_type}_id".to_sym => parent.id, + include_ancestor_groups: include_ancestor_groups?, only_group_labels: parent_is_group? ).execute(skip_authorization: skip_authorization) end @@ -30,7 +31,8 @@ module Labels new_label = available_labels.find_by(title: title) if new_label.nil? && (skip_authorization || Ability.allowed?(current_user, :admin_label, parent)) - new_label = Labels::CreateService.new(params).execute(parent_type.to_sym => parent) + create_params = params.except(:include_ancestor_groups) + new_label = Labels::CreateService.new(create_params).execute(parent_type.to_sym => parent) end new_label @@ -47,5 +49,9 @@ module Labels def parent_is_group? parent_type == "group" end + + def include_ancestor_groups? + params[:include_ancestor_groups] == true + end end end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index a02a9052fb2..172497b8e67 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -2,6 +2,8 @@ module Projects class CreateService < BaseService def initialize(user, params) @current_user, @params = user, params.dup + @skip_wiki = @params.delete(:skip_wiki) + @initialize_with_readme = Gitlab::Utils.to_boolean(@params.delete(:initialize_with_readme)) end def execute @@ -11,7 +13,6 @@ module Projects forked_from_project_id = params.delete(:forked_from_project_id) import_data = params.delete(:import_data) - @skip_wiki = params.delete(:skip_wiki) @project = Project.new(params) @@ -102,6 +103,8 @@ module Projects setup_authorizations current_user.invalidate_personal_projects_count + + create_readme if @initialize_with_readme end # Refresh the current user's authorizations inline (so they can access the @@ -116,6 +119,17 @@ module Projects end end + def create_readme + commit_attrs = { + branch_name: 'master', + commit_message: 'Initial commit', + file_path: 'README.md', + file_content: "# #{@project.name}\n\n#{@project.description}" + } + + Files::CreateService.new(@project, current_user, commit_attrs).execute + end + def skip_wiki? !@project.feature_available?(:wiki, current_user) || @skip_wiki end diff --git a/app/services/todo_service.rb b/app/services/todo_service.rb index f91cd03bf5c..46f12086555 100644 --- a/app/services/todo_service.rb +++ b/app/services/todo_service.rb @@ -260,15 +260,15 @@ class TodoService end end - def create_mention_todos(project, target, author, note = nil, skip_users = []) + def create_mention_todos(parent, target, author, note = nil, skip_users = []) # Create Todos for directly addressed users - directly_addressed_users = filter_directly_addressed_users(project, note || target, author, skip_users) - attributes = attributes_for_todo(project, target, author, Todo::DIRECTLY_ADDRESSED, note) + directly_addressed_users = filter_directly_addressed_users(parent, note || target, author, skip_users) + attributes = attributes_for_todo(parent, target, author, Todo::DIRECTLY_ADDRESSED, note) create_todos(directly_addressed_users, attributes) # Create Todos for mentioned users - mentioned_users = filter_mentioned_users(project, note || target, author, skip_users) - attributes = attributes_for_todo(project, target, author, Todo::MENTIONED, note) + mentioned_users = filter_mentioned_users(parent, note || target, author, skip_users) + attributes = attributes_for_todo(parent, target, author, Todo::MENTIONED, note) create_todos(mentioned_users, attributes) end @@ -299,36 +299,36 @@ class TodoService def attributes_for_todo(project, target, author, action, note = nil) attributes_for_target(target).merge!( - project_id: project.id, + project_id: project&.id, author_id: author.id, action: action, note: note ) end - def filter_todo_users(users, project, target) - reject_users_without_access(users, project, target).uniq + def filter_todo_users(users, parent, target) + reject_users_without_access(users, parent, target).uniq end - def filter_mentioned_users(project, target, author, skip_users = []) + def filter_mentioned_users(parent, target, author, skip_users = []) mentioned_users = target.mentioned_users(author) - skip_users - filter_todo_users(mentioned_users, project, target) + filter_todo_users(mentioned_users, parent, target) end - def filter_directly_addressed_users(project, target, author, skip_users = []) + def filter_directly_addressed_users(parent, target, author, skip_users = []) directly_addressed_users = target.directly_addressed_users(author) - skip_users - filter_todo_users(directly_addressed_users, project, target) + filter_todo_users(directly_addressed_users, parent, target) end - def reject_users_without_access(users, project, target) - if target.is_a?(Note) && (target.for_issue? || target.for_merge_request?) + def reject_users_without_access(users, parent, target) + if target.is_a?(Note) && target.for_issuable? target = target.noteable end if target.is_a?(Issuable) select_users(users, :"read_#{target.to_ability_name}", target) else - select_users(users, :read_project, project) + select_users(users, :read_project, parent) end end |