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
def setup_models
if @relation_name == :notes
set_note_author
# attachment is deprecated and note uploads are handled by Markdown uploader
@relation_hash['attachment'] = nil
case @relation_name
when :merge_request_diff then setup_st_diff_commits
when :merge_request_diff_files then setup_diff
when :notes then setup_note
when :project_label, :project_labels then setup_label
when :milestone, :milestones then setup_milestone
else
@relation_hash['project_id'] = @project.id
end
update_user_references
update_project_references
handle_group_label if group_label?
reset_tokens!
remove_encrypted_attributes!
set_st_diff_commits if @relation_name == :merge_request_diff
set_diff if @relation_name == :merge_request_diff_files
end
def update_user_references
@ -82,6 +81,12 @@ module Gitlab
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
# has admin access, an actual mapping with new project members
# 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']
end
def group_label?
@relation_hash['type'] == 'GroupLabel'
end
def setup_label
return unless @relation_hash['type'] == 'GroupLabel'
def handle_group_label
# If there's no group, move the label to a project label
if @relation_hash['group_id']
@relation_hash['project_id'] = nil
@ -148,6 +151,14 @@ module Gitlab
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!
return unless Gitlab::ImportExport.reset_tokens? && TOKEN_RESET_MODELS.include?(@relation_name.to_s)
@ -196,14 +207,14 @@ module Gitlab
relation_class: relation_class)
end
def set_st_diff_commits
def setup_st_diff_commits
@relation_hash['st_diffs'] = @relation_hash.delete('utf8_st_diffs')
HashUtil.deep_symbolize_array!(@relation_hash['st_diffs'])
HashUtil.deep_symbolize_array_with_date!(@relation_hash['st_commits'])
end
def set_diff
def setup_diff
@relation_hash['diff'] = @relation_hash.delete('utf8_diff')
end
@ -248,8 +259,7 @@ module Gitlab
end
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_type == :group_label
finder_attributes = if @relation_name == :group_label
%w[title group_id]
elsif parsed_relation_hash['project_id']
%w[title project_id]

View file

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