diff options
author | Phil Hughes <me@iamphill.com> | 2018-02-27 10:02:49 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2018-02-27 10:02:49 +0000 |
commit | d01252024ae75fb60f9e1dd51e85519649736e80 (patch) | |
tree | d331f20c9745c321de51fa3608c664ddd0c7791c /app/services/labels/find_or_create_service.rb | |
parent | 6358004b1c64ed3f8b83a75a672a0a72e1bee851 (diff) | |
parent | a4885b8f37602c399efff028b0a733ef80fbe7ab (diff) | |
download | gitlab-ce-d01252024ae75fb60f9e1dd51e85519649736e80.tar.gz |
Merge branch 'master' into 'ph-webpack-bundle-tags'ph-webpack-bundle-tags
# Conflicts:
# app/assets/javascripts/pages/projects/merge_requests/show/index.js
Diffstat (limited to 'app/services/labels/find_or_create_service.rb')
-rw-r--r-- | app/services/labels/find_or_create_service.rb | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/app/services/labels/find_or_create_service.rb b/app/services/labels/find_or_create_service.rb index 940c8b333d3..079f611b3f3 100644 --- a/app/services/labels/find_or_create_service.rb +++ b/app/services/labels/find_or_create_service.rb @@ -1,8 +1,9 @@ module Labels class FindOrCreateService - def initialize(current_user, project, params = {}) + def initialize(current_user, parent, params = {}) @current_user = current_user - @project = project + @parent = parent + @available_labels = params.delete(:available_labels) @params = params.dup.with_indifferent_access end @@ -13,12 +14,13 @@ module Labels private - attr_reader :current_user, :project, :params, :skip_authorization + attr_reader :current_user, :parent, :params, :skip_authorization def available_labels @available_labels ||= LabelsFinder.new( current_user, - project_id: project.id + "#{parent_type}_id".to_sym => parent.id, + only_group_labels: parent_is_group? ).execute(skip_authorization: skip_authorization) end @@ -27,8 +29,8 @@ module Labels def find_or_create_label new_label = available_labels.find_by(title: title) - if new_label.nil? && (skip_authorization || Ability.allowed?(current_user, :admin_label, project)) - new_label = Labels::CreateService.new(params).execute(project: project) + if new_label.nil? && (skip_authorization || Ability.allowed?(current_user, :admin_label, parent)) + new_label = Labels::CreateService.new(params).execute(parent_type.to_sym => parent) end new_label @@ -37,5 +39,13 @@ module Labels def title params[:title] || params[:name] end + + def parent_type + parent.model_name.param_key + end + + def parent_is_group? + parent_type == "group" + end end end |