Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-11-17 14:33:21 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-11-17 14:33:21 +0300
commit7021455bd1ed7b125c55eb1b33c5a01f2bc55ee0 (patch)
tree5bdc2229f5198d516781f8d24eace62fc7e589e9 /app/services/work_items
parent185b095e93520f96e9cfc31d9c3e69b498cdab7c (diff)
Add latest changes from gitlab-org/gitlab@15-6-stable-eev15.6.0-rc42
Diffstat (limited to 'app/services/work_items')
-rw-r--r--app/services/work_items/create_service.rb7
-rw-r--r--app/services/work_items/widgets/hierarchy_service/base_service.rb11
-rw-r--r--app/services/work_items/widgets/milestone_service/base_service.rb39
-rw-r--r--app/services/work_items/widgets/milestone_service/create_service.rb13
-rw-r--r--app/services/work_items/widgets/milestone_service/update_service.rb13
5 files changed, 73 insertions, 10 deletions
diff --git a/app/services/work_items/create_service.rb b/app/services/work_items/create_service.rb
index ebda043e873..87cc690d666 100644
--- a/app/services/work_items/create_service.rb
+++ b/app/services/work_items/create_service.rb
@@ -30,6 +30,13 @@ module WorkItems
error(e.message, :unprocessable_entity)
end
+ def before_create(work_item)
+ execute_widgets(work_item: work_item, callback: :before_create_callback,
+ widget_params: @widget_params)
+
+ super
+ end
+
def transaction_create(work_item)
super.tap do |save_result|
if save_result
diff --git a/app/services/work_items/widgets/hierarchy_service/base_service.rb b/app/services/work_items/widgets/hierarchy_service/base_service.rb
index bb681ef0083..236762d6937 100644
--- a/app/services/work_items/widgets/hierarchy_service/base_service.rb
+++ b/app/services/work_items/widgets/hierarchy_service/base_service.rb
@@ -7,7 +7,6 @@ module WorkItems
private
def handle_hierarchy_changes(params)
- return feature_flag_error unless feature_flag_enabled?
return incompatible_args_error if incompatible_args?(params)
if params.key?(:parent)
@@ -48,24 +47,16 @@ module WorkItems
.execute
end
- def feature_flag_enabled?
- Feature.enabled?(:work_items_hierarchy, work_item&.project)
- end
-
def incompatible_args?(params)
params[:children] && params[:parent]
end
- def feature_flag_error
- error(_('`work_items_hierarchy` feature flag disabled for this project'))
- end
-
def incompatible_args_error
error(_('A Work Item can be a parent or a child, but not both.'))
end
def invalid_args_error(params)
- error(_("One or more arguments are invalid: %{args}." % { args: params.keys.to_sentence } ))
+ error(_("One or more arguments are invalid: %{args}." % { args: params.keys.to_sentence }))
end
def service_response!(result)
diff --git a/app/services/work_items/widgets/milestone_service/base_service.rb b/app/services/work_items/widgets/milestone_service/base_service.rb
new file mode 100644
index 00000000000..f373e6daea3
--- /dev/null
+++ b/app/services/work_items/widgets/milestone_service/base_service.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module WorkItems
+ module Widgets
+ module MilestoneService
+ class BaseService < WorkItems::Widgets::BaseService
+ private
+
+ def handle_milestone_change(params:)
+ return unless params.present? && params.key?(:milestone_id)
+
+ unless has_permission?(:set_work_item_metadata)
+ params.delete(:milestone_id)
+ return
+ end
+
+ if params[:milestone_id].nil?
+ work_item.milestone = nil
+
+ return
+ end
+
+ project = work_item.project
+ milestone = MilestonesFinder.new({
+ project_ids: [project.id],
+ group_ids: project.group&.self_and_ancestors&.select(:id),
+ ids: [params[:milestone_id]]
+ }).execute.first
+
+ if milestone
+ work_item.milestone = milestone
+ else
+ params.delete(:milestone_id)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/app/services/work_items/widgets/milestone_service/create_service.rb b/app/services/work_items/widgets/milestone_service/create_service.rb
new file mode 100644
index 00000000000..e8d6bfe503c
--- /dev/null
+++ b/app/services/work_items/widgets/milestone_service/create_service.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module WorkItems
+ module Widgets
+ module MilestoneService
+ class CreateService < WorkItems::Widgets::MilestoneService::BaseService
+ def before_create_callback(params:)
+ handle_milestone_change(params: params)
+ end
+ end
+ end
+ end
+end
diff --git a/app/services/work_items/widgets/milestone_service/update_service.rb b/app/services/work_items/widgets/milestone_service/update_service.rb
new file mode 100644
index 00000000000..7ff0c2a5367
--- /dev/null
+++ b/app/services/work_items/widgets/milestone_service/update_service.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module WorkItems
+ module Widgets
+ module MilestoneService
+ class UpdateService < WorkItems::Widgets::MilestoneService::BaseService
+ def before_update_callback(params:)
+ handle_milestone_change(params: params)
+ end
+ end
+ end
+ end
+end