From d009d38ed6ab5459f596194ce808c304e6379161 Mon Sep 17 00:00:00 2001 From: Douglas Barbosa Alexandre <dbalexandre@gmail.com> Date: Tue, 18 Oct 2016 00:27:10 -0200 Subject: [PATCH] User Labes::CreateService to create labels --- app/models/project.rb | 3 ++- app/services/boards/lists/generate_service.rb | 3 +-- app/services/issuable_base_service.rb | 4 ++-- app/services/labels/transfer_service.rb | 8 ++------ lib/gitlab/fogbugz_import/importer.rb | 4 ++-- lib/gitlab/github_import/label_formatter.rb | 7 ++++--- lib/gitlab/google_code_import/importer.rb | 4 ++-- lib/gitlab/issues_labels.rb | 4 ++-- 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 -- GitLab