summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-18 00:27:10 -0200
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-19 14:58:27 -0200
commitd009d38ed6ab5459f596194ce808c304e6379161 (patch)
tree4e48d7971255807c008d7c5ff1ade48a92b192af
parent6c189dcc8e76d5ddb348832500b003bf0d1b49a6 (diff)
downloadgitlab-ce-d009d38ed6ab5459f596194ce808c304e6379161.tar.gz
User Labes::CreateService to create labels
-rw-r--r--app/models/project.rb3
-rw-r--r--app/services/boards/lists/generate_service.rb3
-rw-r--r--app/services/issuable_base_service.rb4
-rw-r--r--app/services/labels/transfer_service.rb8
-rw-r--r--lib/gitlab/fogbugz_import/importer.rb4
-rw-r--r--lib/gitlab/github_import/label_formatter.rb7
-rw-r--r--lib/gitlab/google_code_import/importer.rb4
-rw-r--r--lib/gitlab/issues_labels.rb4
8 files changed, 17 insertions, 20 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 7ab624eafdf..bc15ca3fc2e 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -733,7 +733,8 @@ class Project < ActiveRecord::Base
def create_labels
Label.templates.each do |label|
- self.labels.create!(label.attributes.symbolize_keys.except(:id, :template))
+ params = label.attributes.except('id', 'template', 'created_at', 'updated_at')
+ Labels::CreateService.new(owner, self, params).execute
end
end
diff --git a/app/services/boards/lists/generate_service.rb b/app/services/boards/lists/generate_service.rb
index d8048f1c67e..1d3c7f2071b 100644
--- a/app/services/boards/lists/generate_service.rb
+++ b/app/services/boards/lists/generate_service.rb
@@ -19,8 +19,7 @@ module Boards
end
def find_or_create_label(params)
- project.labels.create_with(color: params[:color])
- .find_or_create_by(name: params[:name])
+ ::Labels::CreateService.new(current_user, project, params).execute
end
def label_params
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index deadf1fe283..4554963370f 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -88,8 +88,8 @@ class IssuableBaseService < BaseService
return unless labels
params[:label_ids] = labels.split(',').map do |label_name|
- label = available_labels.find_by(title: label_name)
- label ||= project.labels.create(title: label_name.strip, color: Label::DEFAULT_COLOR)
+ service = Labels::CreateService.new(current_user, project, title: label_name.strip)
+ label = service.execute
label.id
end
diff --git a/app/services/labels/transfer_service.rb b/app/services/labels/transfer_service.rb
index 559d2860d97..65b4bdbaff9 100644
--- a/app/services/labels/transfer_service.rb
+++ b/app/services/labels/transfer_service.rb
@@ -41,13 +41,9 @@ module Labels
LabelLink.where("label_links.id IN (#{union.to_sql})")
end
- def labels
- @labels ||= LabelsFinder.new(current_user, project_id: project.id).execute
- end
-
def find_or_create_label!(label)
- new_label = labels.find_by(title: label.title)
- new_label ||= project.labels.create!(label.attributes.slice("title", "description", "color"))
+ params = label.attributes.slice('title', 'description', 'color')
+ new_label = CreateService.new(current_user, project, params).execute
new_label.id
end
diff --git a/lib/gitlab/fogbugz_import/importer.rb b/lib/gitlab/fogbugz_import/importer.rb
index 9e926e2681a..f154ee689cf 100644
--- a/lib/gitlab/fogbugz_import/importer.rb
+++ b/lib/gitlab/fogbugz_import/importer.rb
@@ -74,8 +74,8 @@ module Gitlab
end
def create_label(name)
- color = nice_label_color(name)
- Label.create!(project_id: project.id, title: name, color: color)
+ params = { title: name, color: nice_label_color(name) }
+ ::Labels::CreateService.new(project.owner, project, params).execute
end
def user_info(person_id)
diff --git a/lib/gitlab/github_import/label_formatter.rb b/lib/gitlab/github_import/label_formatter.rb
index 2cad7fca88e..3101116a614 100644
--- a/lib/gitlab/github_import/label_formatter.rb
+++ b/lib/gitlab/github_import/label_formatter.rb
@@ -14,9 +14,10 @@ module Gitlab
end
def create!
- project.labels.find_or_create_by!(title: title) do |label|
- label.color = color
- end
+ params = attributes.except(:project)
+ service = ::Labels::CreateService.new(project.owner, project, params)
+
+ service.execute
end
private
diff --git a/lib/gitlab/google_code_import/importer.rb b/lib/gitlab/google_code_import/importer.rb
index 79a0eaba1e8..904a228aeef 100644
--- a/lib/gitlab/google_code_import/importer.rb
+++ b/lib/gitlab/google_code_import/importer.rb
@@ -233,8 +233,8 @@ module Gitlab
end
def create_label(name)
- color = nice_label_color(name)
- project.labels.create!(name: name, color: color)
+ params = { name: name, color: nice_label_color(name) }
+ ::Labels::CreateService.new(project.owner, project, params).execute
end
def format_content(raw_content)
diff --git a/lib/gitlab/issues_labels.rb b/lib/gitlab/issues_labels.rb
index 1bec6088292..6788eca7146 100644
--- a/lib/gitlab/issues_labels.rb
+++ b/lib/gitlab/issues_labels.rb
@@ -18,8 +18,8 @@ module Gitlab
{ title: "enhancement", color: green }
]
- labels.each do |label|
- project.labels.create(label)
+ labels.each do |params|
+ ::Labels::CreateService.new(project.owner, project).execute(params)
end
end
end