if issue is not valid we revert back to the old labels when updating
This commit is contained in:
parent
7f0bcf0432
commit
76c2901eac
|
@ -45,6 +45,7 @@ v 8.12.0 (unreleased)
|
|||
|
||||
v 8.11.4 (unreleased)
|
||||
- Fix broken gitlab:backup:restore because of bad permissions on repo storage !6098 (Dirk Hörner)
|
||||
- Creating an issue through our API now emails label subscribers !5720
|
||||
|
||||
v 8.11.3 (unreleased)
|
||||
- Allow system info page to handle case where info is unavailable
|
||||
|
@ -70,7 +71,6 @@ v 8.11.0
|
|||
- Remove the http_parser.rb dependency by removing the tinder gem. !5758 (tbalthazar)
|
||||
- Add Koding (online IDE) integration
|
||||
- Ability to specify branches for Pivotal Tracker integration (Egor Lynko)
|
||||
- Creating an issue through our API now emails label subscribers !5720
|
||||
- Fix don't pass a local variable called `i` to a partial. !20510 (herminiotorres)
|
||||
- Fix rename `add_users_into_project` and `projects_ids`. !20512 (herminiotorres)
|
||||
- Fix adding line comments on the initial commit to a repo !5900
|
||||
|
|
|
@ -45,6 +45,7 @@ class IssuableBaseService < BaseService
|
|||
|
||||
unless can?(current_user, ability, project)
|
||||
params.delete(:milestone_id)
|
||||
params.delete(:labels)
|
||||
params.delete(:add_label_ids)
|
||||
params.delete(:remove_label_ids)
|
||||
params.delete(:label_ids)
|
||||
|
@ -72,6 +73,7 @@ class IssuableBaseService < BaseService
|
|||
filter_labels_in_param(:add_label_ids)
|
||||
filter_labels_in_param(:remove_label_ids)
|
||||
filter_labels_in_param(:label_ids)
|
||||
find_or_create_label_ids
|
||||
end
|
||||
|
||||
def filter_labels_in_param(key)
|
||||
|
@ -80,6 +82,17 @@ class IssuableBaseService < BaseService
|
|||
params[key] = project.labels.where(id: params[key]).pluck(:id)
|
||||
end
|
||||
|
||||
def find_or_create_label_ids
|
||||
labels = params.delete(:labels)
|
||||
return unless labels
|
||||
|
||||
params[:label_ids] = labels.split(",").map do |label_name|
|
||||
project.labels.create_with(color: Label::DEFAULT_COLOR)
|
||||
.find_or_create_by(title: label_name.strip)
|
||||
.id
|
||||
end
|
||||
end
|
||||
|
||||
def process_label_ids(attributes, existing_label_ids: nil)
|
||||
label_ids = attributes.delete(:label_ids)
|
||||
add_label_ids = attributes.delete(:add_label_ids)
|
||||
|
|
|
@ -102,14 +102,6 @@ module API
|
|||
label || not_found!('Label')
|
||||
end
|
||||
|
||||
def get_label_ids(labels)
|
||||
labels.split(",").map do |label_name|
|
||||
user_project.labels.create_with(color: Label::DEFAULT_COLOR)
|
||||
.find_or_create_by(title: label_name.strip)
|
||||
.id
|
||||
end
|
||||
end
|
||||
|
||||
def find_project_issue(id)
|
||||
issue = user_project.issues.find(id)
|
||||
not_found! unless can?(current_user, :read_issue, issue)
|
||||
|
|
|
@ -154,9 +154,7 @@ module API
|
|||
render_api_error!({ labels: errors }, 400)
|
||||
end
|
||||
|
||||
# Find or create labels to attach to the issue. Labels are vaild
|
||||
# because we already checked its name, so there can't be an error here
|
||||
attrs[:label_ids] = get_label_ids(params[:labels]) if params[:labels].present?
|
||||
attrs[:labels] = params[:labels] if params[:labels]
|
||||
|
||||
issue = ::Issues::CreateService.new(user_project, current_user, attrs.merge(request: request, api: true)).execute
|
||||
|
||||
|
@ -198,12 +196,7 @@ module API
|
|||
render_api_error!({ labels: errors }, 400)
|
||||
end
|
||||
|
||||
# Find or create labels and attach to issue. Labels are valid because
|
||||
# we already checked its name, so there can't be an error here
|
||||
if params[:labels] && can?(current_user, :admin_issue, user_project)
|
||||
issue.remove_labels
|
||||
attrs[:label_ids] = get_label_ids(params[:labels])
|
||||
end
|
||||
attrs[:labels] = params[:labels] if params[:labels]
|
||||
|
||||
issue = ::Issues::UpdateService.new(user_project, current_user, attrs).execute(issue)
|
||||
|
||||
|
|
|
@ -647,7 +647,7 @@ describe API::API, api: true do
|
|||
end
|
||||
|
||||
it "sends notifications for subscribers of newly added labels when issue is updated" do
|
||||
label = project.labels.first
|
||||
label = create(:label, title: 'foo', color: '#FFAABB', project: project)
|
||||
label.toggle_subscription(user2)
|
||||
|
||||
perform_enqueued_jobs do
|
||||
|
|
Loading…
Reference in New Issue