From 3a131383b68dcb14abd9d31a2a462ffa57841095 Mon Sep 17 00:00:00 2001 From: James Lopez <james@jameslopez.es> Date: Mon, 14 Mar 2016 10:35:41 +0100 Subject: [PATCH] fixed MR issue and refactored some stuff --- app/models/merge_request.rb | 2 +- .../projects/import_export/members_mapper.rb | 8 ++------ .../projects/import_export/relation_factory.rb | 13 +++++++------ 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 714d55323d4..de6189b2dc8 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -125,7 +125,7 @@ class MergeRequest < ActiveRecord::Base end end - validates :source_project, presence: true, unless: :allow_broken + validates :source_project, presence: true, unless: [:allow_broken, :importing] validates :source_branch, presence: true validates :target_project, presence: true validates :target_branch, presence: true diff --git a/app/services/projects/import_export/members_mapper.rb b/app/services/projects/import_export/members_mapper.rb index 8d47422b10c..6d49d901bf3 100644 --- a/app/services/projects/import_export/members_mapper.rb +++ b/app/services/projects/import_export/members_mapper.rb @@ -13,12 +13,6 @@ module Projects end def map - @project_member_map ||= project_member_map - end - - private - - def project_member_map @project_member_map = Hash.new(default_project_member) @exported_members.each do |member| existing_user = User.where(find_project_user_query(member)).first @@ -27,6 +21,8 @@ module Projects @project_member_map end + private + def assign_member(existing_user, member) old_user_id = member['user']['id'] member['user'] = existing_user diff --git a/app/services/projects/import_export/relation_factory.rb b/app/services/projects/import_export/relation_factory.rb index 1b9bd234a43..6ccaa409ce9 100644 --- a/app/services/projects/import_export/relation_factory.rb +++ b/app/services/projects/import_export/relation_factory.rb @@ -10,18 +10,19 @@ module Projects relation_sym = parse_relation_sym(relation_sym) klass = relation_class(relation_sym) relation_hash.delete('id') #screw IDs for now - #TODO refactor this... - if relation_sym == :merge_requests - relation_hash['target_project_id'] = relation_hash.delete('project_id') - relation_hash['source_project_id'] = -1 - relation_hash['importing'] = true - end + handle_merge_requests(relation_hash) if relation_sym == :merge_requests update_user_references(relation_hash, members_map) klass.new(relation_hash) end private + def handle_merge_requests(relation_hash) + relation_hash['target_project_id'] = relation_hash.delete('project_id') + relation_hash['source_project_id'] = -1 + relation_hash['importing'] = true + end + #TODO nice to have, optimize this to only get called for specific models def update_user_references(relation_hash, members_map) USER_REFERENCES.each do |reference| -- GitLab