Avoid creating labels when removing them

IssuableBaseService has been updated so that labels are not
created when push options to remove them are received.
This commit is contained in:
Christian Couder 2019-08-30 09:51:45 +02:00
parent f00db0c342
commit 760d4a1621
3 changed files with 8 additions and 6 deletions

View file

@ -85,7 +85,7 @@ class IssuableBaseService < BaseService
if params[:remove_label_ids]
params[:remove_label_ids] = labels_service.filter_labels_ids_in_param(:remove_label_ids)
elsif params[:remove_labels]
params[:remove_label_ids] = labels_service.find_or_create_by_titles(:remove_labels).map(&:id)
params[:remove_label_ids] = labels_service.find_or_create_by_titles(:remove_labels, find_only: true).map(&:id)
end
if params[:label_ids]

View file

@ -9,7 +9,7 @@ module Labels
@params = params
end
def find_or_create_by_titles(key = :labels)
def find_or_create_by_titles(key = :labels, find_only: false)
labels = params.delete(key)
return [] unless labels
@ -23,7 +23,7 @@ module Labels
include_ancestor_groups: true,
title: label_name.strip,
available_labels: available_labels
).execute
).execute(find_only: find_only)
label
end.compact

View file

@ -9,9 +9,9 @@ module Labels
@params = params.dup.with_indifferent_access
end
def execute(skip_authorization: false)
def execute(skip_authorization: false, find_only: false)
@skip_authorization = skip_authorization
find_or_create_label
find_or_create_label(find_only: find_only)
end
private
@ -30,9 +30,11 @@ module Labels
# Only creates the label if current_user can do so, if the label does not exist
# and the user can not create the label, nil is returned
# rubocop: disable CodeReuse/ActiveRecord
def find_or_create_label
def find_or_create_label(find_only: false)
new_label = available_labels.find_by(title: title)
return new_label if find_only
if new_label.nil? && (skip_authorization || Ability.allowed?(current_user, :admin_label, parent))
create_params = params.except(:include_ancestor_groups)
new_label = Labels::CreateService.new(create_params).execute(parent_type.to_sym => parent)