Module: Import::PlaceholderReferences::Pusher

Instance Method Summary collapse

Instance Method Details

#push_reference(project, record, attribute, source_user_identifier) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/import/placeholder_references/pusher.rb', line 6

def push_reference(project, record, attribute, source_user_identifier)
  return unless user_mapping_enabled?(project)

  source_user = source_user_mapper(project).find_source_user(source_user_identifier)

  # Do not create a reference if the object is already associated
  # with a real user.
  return if source_user_mapped_to_human?(record, attribute, source_user)

  ::Import::PlaceholderReferences::PushService.from_record(
    import_source: ::Import::SOURCE_BITBUCKET_SERVER,
    import_uid: project.import_state.id,
    record: record,
    source_user: source_user,
    user_reference_column: attribute
  ).execute
end

#source_user_mapped_to_human?(record, attribute, source_user) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
# File 'lib/import/placeholder_references/pusher.rb', line 24

def source_user_mapped_to_human?(record, attribute, source_user)
  source_user.nil? ||
    (source_user.accepted_status? && record[attribute] == source_user.reassign_to_user_id)
end

#source_user_mapper(project) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/import/placeholder_references/pusher.rb', line 29

def source_user_mapper(project)
  @user_mapper ||= ::Gitlab::Import::SourceUserMapper.new(
    namespace: project.root_ancestor,
    source_hostname: project.import_url,
    import_type: ::Import::SOURCE_BITBUCKET_SERVER
  )
end

#user_mapping_enabled?(project) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/import/placeholder_references/pusher.rb', line 37

def user_mapping_enabled?(project)
  !!project.import_data.user_mapping_enabled?
end