diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 714d55323d4302fbdcafaa17927e9ad0a15b1b31..de6189b2dc8e8c96b743e1dd94d901c07faa7919 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 8d47422b10c5305458fd197bd41f0786dcff5a9d..6d49d901bf3fca6fc7f78b802bcd5f029405cca6 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 1b9bd234a4316bb0b6f6c2522bc1a2ce3bc03b1c..6ccaa409ce97928e1f929c83383329722baf0931 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|