summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-09-26 23:23:58 -0300
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 14:58:24 -0200
commit20b6974a5c7866b24969937caadd5cf483c8f8a4 (patch)
tree095499f4ef6e6c8884434d56c4fc28b3791fa4fe
parentb654229dcd3e4460ad7305ee7714395f044a72aa (diff)
downloadgitlab-ce-20b6974a5c7866b24969937caadd5cf483c8f8a4.tar.gz
Fix Issuable#add_labels_by_names to validate if label exists on group
-rw-r--r--app/models/concerns/issuable.rb14
1 files changed, 12 insertions, 2 deletions
diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb
index c4b42ad82c7..1647d693a9d 100644
--- a/app/models/concerns/issuable.rb
+++ b/app/models/concerns/issuable.rb
@@ -235,9 +235,19 @@ module Issuable
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})")
+
label_names.each do |label_name|
- label = project.labels.create_with(color: Label::DEFAULT_COLOR).
- find_or_create_by(title: label_name.strip)
+ title = label_name.strip
+ label = available_labels.find_by(title: title)
+ label = project.labels.build(title: title, color: Label::DEFAULT_COLOR) if label.nil?
+
self.labels << label
end
end