summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-03 18:41:46 -0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 14:58:25 -0200
commit7e11ca86fdb23c967c25b19735770f99f936b32c (patch)
treeefc1d9d236c9dc7bdea9e0514811da289618f1aa
parent3db2261005c438faad8bf4a339d46eb7798f05b5 (diff)
downloadgitlab-ce-7e11ca86fdb23c967c25b19735770f99f936b32c.tar.gz
Reuse LabelsFinder on Issueable#add_labels_by_names
-rw-r--r--app/models/concerns/issuable.rb12
-rw-r--r--lib/api/merge_requests.rb4
-rw-r--r--lib/gitlab/fogbugz_import/importer.rb2
-rw-r--r--lib/gitlab/google_code_import/importer.rb2
-rw-r--r--spec/lib/gitlab/google_code_import/importer_spec.rb7
5 files changed, 11 insertions, 16 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index 1647d693a9d..fee68d9cc8f 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -234,19 +234,13 @@ module Issuable
labels.delete_all
end
- def add_labels_by_names(label_names)
- label_ids = []
- label_ids << project.group.labels.select(:id) if project.group.present?
- label_ids << project.labels.select(:id)
-
- union = Gitlab::SQL::Union.new(label_ids)
-
- available_labels = Label.where("labels.id IN (#{union.to_sql})")
+ def add_labels_by_names(label_names, current_user)
+ available_labels = LabelsFinder.new(current_user, project_id: project.id).execute
label_names.each do |label_name|
title = label_name.strip
label = available_labels.find_by(title: title)
- label = project.labels.build(title: title, color: Label::DEFAULT_COLOR) if label.nil?
+ label ||= project.labels.build(title: title, color: Label::DEFAULT_COLOR)
self.labels << label
end
diff --git a/lib/api/merge_requests.rb b/lib/api/merge_requests.rb
index 2b685621da9..67fdd0be927 100644
--- a/lib/api/merge_requests.rb
+++ b/lib/api/merge_requests.rb
@@ -91,7 +91,7 @@ module API
if merge_request.valid?
# Find or create labels and attach to issue
if params[:labels].present?
- merge_request.add_labels_by_names(params[:labels].split(","))
+ merge_request.add_labels_by_names(params[:labels].split(","), current_user)
end
present merge_request, with: Entities::MergeRequest, current_user: current_user
@@ -201,7 +201,7 @@ module API
# Find or create labels and attach to issue
unless params[:labels].nil?
merge_request.remove_labels
- merge_request.add_labels_by_names(params[:labels].split(","))
+ merge_request.add_labels_by_names(params[:labels].split(","), current_user)
end
present merge_request, with: Entities::MergeRequest, current_user: current_user
diff --git a/lib/gitlab/fogbugz_import/importer.rb b/lib/gitlab/fogbugz_import/importer.rb
index 501d5a95547..1d6f97b99c7 100644
--- a/lib/gitlab/fogbugz_import/importer.rb
+++ b/lib/gitlab/fogbugz_import/importer.rb
@@ -129,7 +129,7 @@ module Gitlab
assignee_id: assignee_id,
state: bug['fOpen'] == 'true' ? 'opened' : 'closed'
)
- issue.add_labels_by_names(labels)
+ issue.add_labels_by_names(labels, project.creator)
if issue.iid != bug['ixBug']
issue.update_attribute(:iid, bug['ixBug'])
diff --git a/lib/gitlab/google_code_import/importer.rb b/lib/gitlab/google_code_import/importer.rb
index ef8c3e35619..8d757da2264 100644
--- a/lib/gitlab/google_code_import/importer.rb
+++ b/lib/gitlab/google_code_import/importer.rb
@@ -100,7 +100,7 @@ module Gitlab
state: raw_issue["state"] == "closed" ? "closed" : "opened"
)
- issue.add_labels_by_names(labels)
+ issue.add_labels_by_names(labels, project.creator)
if issue.iid != raw_issue["id"]
issue.update_attribute(:iid, raw_issue["id"])
diff --git a/spec/lib/gitlab/google_code_import/importer_spec.rb b/spec/lib/gitlab/google_code_import/importer_spec.rb
index 54f85f8cffc..097861fd34d 100644
--- a/spec/lib/gitlab/google_code_import/importer_spec.rb
+++ b/spec/lib/gitlab/google_code_import/importer_spec.rb
@@ -15,6 +15,7 @@ describe Gitlab::GoogleCodeImport::Importer, lib: true do
subject { described_class.new(project) }
before do
+ project.team << [project.creator, :master]
project.create_import_data(data: import_data)
end
@@ -31,9 +32,9 @@ describe Gitlab::GoogleCodeImport::Importer, lib: true do
subject.execute
%w(
- Type-Defect Type-Enhancement Type-Task Type-Review Type-Other Milestone-0.12 Priority-Critical
- Priority-High Priority-Medium Priority-Low OpSys-All OpSys-Windows OpSys-Linux OpSys-OSX Security
- Performance Usability Maintainability Component-Panel Component-Taskbar Component-Battery
+ Type-Defect Type-Enhancement Type-Task Type-Review Type-Other Milestone-0.12 Priority-Critical
+ Priority-High Priority-Medium Priority-Low OpSys-All OpSys-Windows OpSys-Linux OpSys-OSX Security
+ Performance Usability Maintainability Component-Panel Component-Taskbar Component-Battery
Component-Systray Component-Clock Component-Launcher Component-Tint2conf Component-Docs Component-New
).each do |label|
label.sub!("-", ": ")