Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions cds_migrator_kit/users/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,14 +83,21 @@ def create_user(self, email, name, person_id, username, extra_data=None):
"person_id": person_id,
}
if name:
profile_data.update({"full_name": name})
if "department" in extra_data:
profile_data.update({"department": extra_data["department"]})
profile = deepcopy(user.user_profile)
profile.update(profile_data)
user.user_profile = profile
db.session.add(user)
else:
# Create the full name from the email
profile_data.update(
{"full_name": email.split("@")[0].replace(".", " ").capitalize()}
)

profile = deepcopy(user.user_profile)
profile.update(profile_data)
user.user_profile = profile
db.session.add(user)

remote_account = self.create_invenio_remote_account(user_id, extra_data)
db.session.add(remote_account)

db.session.commit()
return user
8 changes: 7 additions & 1 deletion cds_migrator_kit/users/load.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ def get_person_old_db(email):
elif person_old_db:
names = "".join(person_old_db["displayname"].split())
username = names.lower().replace(".", "")
if not username:
if not username or len(username) < 3:
username = f'MIGRATED{email_addr.split("@")[0].replace(".", "")}'
username = re.sub(r"\W+", "", username)
displayname = person_old_db["displayname"]
Expand All @@ -148,9 +148,15 @@ def get_person_old_db(email):
# and return that user as source of truth ( we assume auth service is most
# up to date)
if existing_identity:
logger_users.info(
f"User {email_addr} already exists with person ID {person_id}"
)
return existing_identity.id_user

try:
logger_users.info(
f"Creating user {email_addr}, {displayname}, {username}, {person_id}, {json.dumps(extra_data)}"
)
user = user_api.create_user(
email_addr,
name=displayname,
Expand Down
15 changes: 12 additions & 3 deletions tests/cds-rdm/test_full_migration.py
Original file line number Diff line number Diff line change
Expand Up @@ -498,11 +498,12 @@ def test_full_migration_stream(
author_with_inspire(loaded_rec)

# Check if remote account has the correct metadata
remote_account_metadata()
# Check if user profile has the correct metadata
user_metadata()


def remote_account_metadata():
"""Checks for remote account extra_data."""
def user_metadata():
"""Checks for user profile and remote account extra_data."""
user = User.query.filter_by(email="submitter13@cern.ch").one()
assert user is not None

Expand All @@ -515,6 +516,8 @@ def remote_account_metadata():
}
}

assert user.user_profile == {"full_name": "Submitter 13"}

user = User.query.filter_by(email="submitter16@cern.ch").one()
assert user is not None

Expand All @@ -527,6 +530,8 @@ def remote_account_metadata():
}
}

assert user.user_profile == {"full_name": "Submitter16"}

user = User.query.filter_by(email="submitter11@cern.ch").one()
assert user is not None

Expand All @@ -539,6 +544,8 @@ def remote_account_metadata():
}
}

assert user.user_profile == {"full_name": "Submitter Eleven"}

user = User.query.filter_by(email="submitter15@cern.ch").one()
assert user is not None

Expand All @@ -550,3 +557,5 @@ def remote_account_metadata():
"note": "MIGRATED INACTIVE ACCOUNT",
}
}

assert user.user_profile == {"full_name": "Mendoza Diego", "person_id": "11115"}
Loading