summaryrefslogtreecommitdiff
path: root/app/services/issuable
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-02-03 15:08:45 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-02-03 15:08:45 +0000
commit55693cc1ec8ac79444bc7214d2812a4ac41bf043 (patch)
treec9e9df7be9eac5dd1ea71f65da9a6831834b08c4 /app/services/issuable
parentc089cf73c2f1835dc68fd6107d6cbd10fc17f365 (diff)
downloadgitlab-ce-55693cc1ec8ac79444bc7214d2812a4ac41bf043.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/issuable')
-rw-r--r--app/services/issuable/clone/attributes_rewriter.rb40
1 files changed, 20 insertions, 20 deletions
diff --git a/app/services/issuable/clone/attributes_rewriter.rb b/app/services/issuable/clone/attributes_rewriter.rb
index 334e50c0be5..2b436f6322c 100644
--- a/app/services/issuable/clone/attributes_rewriter.rb
+++ b/app/services/issuable/clone/attributes_rewriter.rb
@@ -12,7 +12,7 @@ module Issuable
def execute
update_attributes = { labels: cloneable_labels }
- milestone = cloneable_milestone
+ milestone = matching_milestone(original_entity.milestone&.title)
update_attributes[:milestone] = milestone if milestone.present?
new_entity.update(update_attributes)
@@ -23,11 +23,8 @@ module Issuable
private
- def cloneable_milestone
- return unless new_entity.supports_milestone?
-
- title = original_entity.milestone&.title
- return unless title
+ def matching_milestone(title)
+ return if title.blank? || !new_entity.supports_milestone?
params = { title: title, project_ids: new_entity.project&.id, group_ids: group&.id }
@@ -49,29 +46,32 @@ module Issuable
end
def copy_resource_label_events
- original_entity.resource_label_events.find_in_batches do |batch|
- events = batch.map do |event|
- entity_key = new_entity.is_a?(Issue) ? 'issue_id' : 'epic_id'
- event.attributes
- .except('id', 'reference', 'reference_html')
- .merge(entity_key => new_entity.id, 'action' => ResourceLabelEvent.actions[event.action])
- end
+ entity_key = new_entity.class.name.underscore.foreign_key
- Gitlab::Database.bulk_insert(ResourceLabelEvent.table_name, events)
+ copy_events(ResourceLabelEvent.table_name, original_entity.resource_label_events) do |event|
+ event.attributes
+ .except('id', 'reference', 'reference_html')
+ .merge(entity_key => new_entity.id, 'action' => ResourceLabelEvent.actions[event.action])
end
end
def copy_resource_weight_events
return unless original_entity.respond_to?(:resource_weight_events)
- original_entity.resource_weight_events.find_in_batches do |batch|
+ copy_events(ResourceWeightEvent.table_name, original_entity.resource_weight_events) do |event|
+ event.attributes
+ .except('id', 'reference', 'reference_html')
+ .merge('issue_id' => new_entity.id)
+ end
+ end
+
+ def copy_events(table_name, events_to_copy)
+ events_to_copy.find_in_batches do |batch|
events = batch.map do |event|
- event.attributes
- .except('id', 'reference', 'reference_html')
- .merge('issue_id' => new_entity.id)
- end
+ yield(event)
+ end.compact
- Gitlab::Database.bulk_insert(ResourceWeightEvent.table_name, events)
+ Gitlab::Database.bulk_insert(table_name, events)
end
end