diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2019-08-30 09:51:45 +0200 |
---|---|---|
committer | Christian Couder <chriscool@tuxfamily.org> | 2019-09-04 12:11:31 +0200 |
commit | 760d4a16214b2ae77c4c0ea9c719815e9473dcd9 (patch) | |
tree | 07c5b8a8db969a741f97294584a1f64c9bb09244 /app/services/labels | |
parent | f00db0c342d01b33617f269447ff76140944a86e (diff) | |
download | gitlab-ce-760d4a16214b2ae77c4c0ea9c719815e9473dcd9.tar.gz |
Avoid creating labels when removing them
IssuableBaseService has been updated so that labels are not
created when push options to remove them are received.
Diffstat (limited to 'app/services/labels')
-rw-r--r-- | app/services/labels/available_labels_service.rb | 4 | ||||
-rw-r--r-- | app/services/labels/find_or_create_service.rb | 8 |
2 files changed, 7 insertions, 5 deletions
diff --git a/app/services/labels/available_labels_service.rb b/app/services/labels/available_labels_service.rb index bdd5f660576..8886e58d6ef 100644 --- a/app/services/labels/available_labels_service.rb +++ b/app/services/labels/available_labels_service.rb @@ -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 diff --git a/app/services/labels/find_or_create_service.rb b/app/services/labels/find_or_create_service.rb index 628873519d7..a47dd42aea0 100644 --- a/app/services/labels/find_or_create_service.rb +++ b/app/services/labels/find_or_create_service.rb @@ -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) |