Commit 8f0cef0b authored by Valery Sizov's avatar Valery Sizov

BB importer: Refactoring user importing logic[ci skip]

parent f20ea1f5
...@@ -5,10 +5,6 @@ module Bitbucket ...@@ -5,10 +5,6 @@ module Bitbucket
@raw = raw @raw = raw
end end
def user_representation(raw)
User.new(raw)
end
def self.decorate(entries) def self.decorate(entries)
entries.map { |entry| new(entry)} entries.map { |entry| new(entry)}
end end
......
...@@ -2,7 +2,7 @@ module Bitbucket ...@@ -2,7 +2,7 @@ module Bitbucket
module Representation module Representation
class Comment < Representation::Base class Comment < Representation::Base
def author def author
user_representation(user) user['username']
end end
def note def note
......
...@@ -12,7 +12,7 @@ module Bitbucket ...@@ -12,7 +12,7 @@ module Bitbucket
end end
def author def author
user_representation(raw.fetch('reporter', {})) raw.dig('reporter', 'username')
end end
def description def description
......
...@@ -2,7 +2,7 @@ module Bitbucket ...@@ -2,7 +2,7 @@ module Bitbucket
module Representation module Representation
class PullRequest < Representation::Base class PullRequest < Representation::Base
def author def author
user_representation(raw.fetch('author', {})) raw.dig('author', 'username')
end end
def description def description
......
...@@ -2,11 +2,7 @@ module Bitbucket ...@@ -2,11 +2,7 @@ module Bitbucket
module Representation module Representation
class User < Representation::Base class User < Representation::Base
def username def username
raw['username'] || 'Anonymous' raw['username']
end
def uuid
raw['uuid']
end end
end end
end end
......
...@@ -24,21 +24,21 @@ module Gitlab ...@@ -24,21 +24,21 @@ module Gitlab
private private
def gitlab_user_id(project, user) def gitlab_user_id(project, username)
if user.uuid if username
user = find_user_by_uuid(user.uuid) user = find_user(username)
(user && user.id) || project.creator_id (user && user.id) || project.creator_id
else else
project.creator_id project.creator_id
end end
end end
def find_user_by_uuid(uuid) def find_user(username)
User.joins(:identities).find_by("identities.extern_uid = ? AND identities.provider = 'bitbucket'", uuid) User.joins(:identities).find_by("identities.extern_uid = ? AND identities.provider = 'bitbucket'", username)
end end
def existing_gitlab_user?(user) def existing_gitlab_user?(username)
user.uuid && find_user_by_uuid(user.uuid) username && find_user(username)
end end
def repo def repo
...@@ -52,7 +52,7 @@ module Gitlab ...@@ -52,7 +52,7 @@ module Gitlab
client.issues(repo).each do |issue| client.issues(repo).each do |issue|
description = '' description = ''
description += @formatter.author_line(issue.author.username) unless existing_gitlab_user?(issue.author) description += @formatter.author_line(issue.author) unless existing_gitlab_user?(issue.author)
description += issue.description description += issue.description
label_name = issue.kind label_name = issue.kind
...@@ -79,7 +79,7 @@ module Gitlab ...@@ -79,7 +79,7 @@ module Gitlab
next unless comment.note.present? next unless comment.note.present?
note = '' note = ''
note += @formatter.author_line(comment.author.username) unless existing_gitlab_user?(comment.author) note += @formatter.author_line(comment.author) unless existing_gitlab_user?(comment.author)
note += comment.note note += comment.note
issue.notes.create!( issue.notes.create!(
...@@ -108,7 +108,7 @@ module Gitlab ...@@ -108,7 +108,7 @@ module Gitlab
pull_requests.each do |pull_request| pull_requests.each do |pull_request|
begin begin
description = '' description = ''
description += @formatter.author_line(pull_request.author.username) unless existing_gitlab_user?(pull_request.author) description += @formatter.author_line(pull_request.author) unless existing_gitlab_user?(pull_request.author)
description += pull_request.description description += pull_request.description
merge_request = project.merge_requests.create( merge_request = project.merge_requests.create(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment