fixing group label import
This commit is contained in:
parent
a0b8275da5
commit
de025ad2db
2 changed files with 29 additions and 19 deletions
|
@ -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]
|
||||||
|
|
|
@ -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",
|
||||||
|
|
Loading…
Reference in a new issue