summaryrefslogtreecommitdiff
path: root/app/services/releases
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-09-16 15:06:26 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-09-16 15:06:26 +0000
commit84727c8209a4412e21111a07f99b0438b03232de (patch)
tree1fcfa02b01548c3cdc561186870a1c807f227f0b /app/services/releases
parentd2798d607e11e0ebae83ae909404834388733428 (diff)
downloadgitlab-ce-84727c8209a4412e21111a07f99b0438b03232de.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/releases')
-rw-r--r--app/services/releases/concerns.rb22
-rw-r--r--app/services/releases/create_service.rb4
-rw-r--r--app/services/releases/update_service.rb4
3 files changed, 17 insertions, 13 deletions
diff --git a/app/services/releases/concerns.rb b/app/services/releases/concerns.rb
index b5412e97284..a0ebaea77c8 100644
--- a/app/services/releases/concerns.rb
+++ b/app/services/releases/concerns.rb
@@ -48,25 +48,29 @@ module Releases
end
end
- def milestone
- return unless params[:milestone]
+ def milestones
+ return [] unless param_for_milestone_titles_provided?
- strong_memoize(:milestone) do
+ strong_memoize(:milestones) do
MilestonesFinder.new(
project: project,
current_user: current_user,
project_ids: Array(project.id),
- title: params[:milestone]
- ).execute.first
+ state: 'all',
+ title: params[:milestones]
+ ).execute
end
end
- def inexistent_milestone?
- params[:milestone] && !params[:milestone].empty? && !milestone
+ def inexistent_milestones
+ return [] unless param_for_milestone_titles_provided?
+
+ existing_milestone_titles = milestones.map(&:title)
+ Array(params[:milestones]) - existing_milestone_titles
end
- def param_for_milestone_title_provided?
- params[:milestone].present? || params[:milestone]&.empty?
+ def param_for_milestone_titles_provided?
+ params.key?(:milestones)
end
end
end
diff --git a/app/services/releases/create_service.rb b/app/services/releases/create_service.rb
index c91d43084d3..9a0a876454f 100644
--- a/app/services/releases/create_service.rb
+++ b/app/services/releases/create_service.rb
@@ -7,7 +7,7 @@ module Releases
def execute
return error('Access Denied', 403) unless allowed?
return error('Release already exists', 409) if release
- return error('Milestone does not exist', 400) if inexistent_milestone?
+ return error("Milestone(s) not found: #{inexistent_milestones.join(', ')}", 400) if inexistent_milestones.any?
tag = ensure_tag
@@ -61,7 +61,7 @@ module Releases
sha: tag.dereferenced_target.sha,
released_at: released_at,
links_attributes: params.dig(:assets, 'links') || [],
- milestone: milestone
+ milestones: milestones
)
end
end
diff --git a/app/services/releases/update_service.rb b/app/services/releases/update_service.rb
index 70acc68f747..7aa51c4a332 100644
--- a/app/services/releases/update_service.rb
+++ b/app/services/releases/update_service.rb
@@ -9,9 +9,9 @@ module Releases
return error('Release does not exist', 404) unless release
return error('Access Denied', 403) unless allowed?
return error('params is empty', 400) if empty_params?
- return error('Milestone does not exist', 400) if inexistent_milestone?
+ return error("Milestone(s) not found: #{inexistent_milestones.join(', ')}", 400) if inexistent_milestones.any?
- params[:milestone] = milestone if param_for_milestone_title_provided?
+ params[:milestones] = milestones if param_for_milestone_titles_provided?
if release.update(params)
success(tag: existing_tag, release: release)