fixing group label import

This commit is contained in:
micael.bergeron 2017-10-06 09:11:29 -04:00
parent a0b8275da5
commit de025ad2db
2 changed files with 29 additions and 19 deletions

View file

@ -56,22 +56,21 @@ module Gitlab
private private
def setup_models def setup_models
if @relation_name == :notes case @relation_name
set_note_author when :merge_request_diff then setup_st_diff_commits
when :merge_request_diff_files then setup_diff
# attachment is deprecated and note uploads are handled by Markdown uploader when :notes then setup_note
@relation_hash['attachment'] = nil when :project_label, :project_labels then setup_label
when :milestone, :milestones then setup_milestone
else
@relation_hash['project_id'] = @project.id
end end
update_user_references update_user_references
update_project_references update_project_references
handle_group_label if group_label?
reset_tokens! reset_tokens!
remove_encrypted_attributes! remove_encrypted_attributes!
set_st_diff_commits if @relation_name == :merge_request_diff
set_diff if @relation_name == :merge_request_diff_files
end end
def update_user_references def update_user_references
@ -82,6 +81,12 @@ module Gitlab
end end
end end
def setup_note
set_note_author
# attachment is deprecated and note uploads are handled by Markdown uploader
@relation_hash['attachment'] = nil
end
# Sets the author for a note. If the user importing the project # Sets the author for a note. If the user importing the project
# has admin access, an actual mapping with new project members # has admin access, an actual mapping with new project members
# will be used. Otherwise, a note stating the original author name # will be used. Otherwise, a note stating the original author name
@ -134,11 +139,9 @@ module Gitlab
@relation_hash['target_project_id'] && @relation_hash['target_project_id'] == @relation_hash['source_project_id'] @relation_hash['target_project_id'] && @relation_hash['target_project_id'] == @relation_hash['source_project_id']
end end
def group_label? def setup_label
@relation_hash['type'] == 'GroupLabel' return unless @relation_hash['type'] == 'GroupLabel'
end
def handle_group_label
# If there's no group, move the label to a project label # If there's no group, move the label to a project label
if @relation_hash['group_id'] if @relation_hash['group_id']
@relation_hash['project_id'] = nil @relation_hash['project_id'] = nil
@ -148,6 +151,14 @@ module Gitlab
end end
end end
def setup_milestone
if @relation_hash['group_id']
@relation_hash['group_id'] = @project.group.id
else
@relation_hash['project_id'] = @project.id
end
end
def reset_tokens! def reset_tokens!
return unless Gitlab::ImportExport.reset_tokens? && TOKEN_RESET_MODELS.include?(@relation_name.to_s) return unless Gitlab::ImportExport.reset_tokens? && TOKEN_RESET_MODELS.include?(@relation_name.to_s)
@ -196,14 +207,14 @@ module Gitlab
relation_class: relation_class) relation_class: relation_class)
end end
def set_st_diff_commits def setup_st_diff_commits
@relation_hash['st_diffs'] = @relation_hash.delete('utf8_st_diffs') @relation_hash['st_diffs'] = @relation_hash.delete('utf8_st_diffs')
HashUtil.deep_symbolize_array!(@relation_hash['st_diffs']) HashUtil.deep_symbolize_array!(@relation_hash['st_diffs'])
HashUtil.deep_symbolize_array_with_date!(@relation_hash['st_commits']) HashUtil.deep_symbolize_array_with_date!(@relation_hash['st_commits'])
end end
def set_diff def setup_diff
@relation_hash['diff'] = @relation_hash.delete('utf8_diff') @relation_hash['diff'] = @relation_hash.delete('utf8_diff')
end end
@ -248,8 +259,7 @@ module Gitlab
end end
def find_or_create_object! def find_or_create_object!
# TODO: Trying to find how I can correctly use the correct id depending on the object's type finder_attributes = if @relation_name == :group_label
finder_attributes = if @relation_type == :group_label
%w[title group_id] %w[title group_id]
elsif parsed_relation_hash['project_id'] elsif parsed_relation_hash['project_id']
%w[title project_id] %w[title project_id]

View file

@ -19,7 +19,7 @@
"labels": [ "labels": [
{ {
"id": 2, "id": 2,
"title": "test2", "title": "A project label",
"color": "#428bca", "color": "#428bca",
"project_id": 8, "project_id": 8,
"created_at": "2016-07-22T08:55:44.161Z", "created_at": "2016-07-22T08:55:44.161Z",
@ -85,7 +85,7 @@
"updated_at": "2017-08-15T18:37:40.795Z", "updated_at": "2017-08-15T18:37:40.795Z",
"label": { "label": {
"id": 6, "id": 6,
"title": "project label", "title": "Another project label",
"color": "#A8D695", "color": "#A8D695",
"project_id": null, "project_id": null,
"created_at": "2017-08-15T18:37:19.698Z", "created_at": "2017-08-15T18:37:19.698Z",