From 9a4a48b391e7af4dfa93ef1fcb24badf47eb0108 Mon Sep 17 00:00:00 2001 From: Saksham Date: Thu, 2 Apr 2026 15:16:36 +0200 Subject: [PATCH] fix(users): Commit user profile data to DB --- cds_migrator_kit/users/api.py | 17 ++++++++++++----- cds_migrator_kit/users/load.py | 8 +++++++- tests/cds-rdm/test_full_migration.py | 15 ++++++++++++--- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/cds_migrator_kit/users/api.py b/cds_migrator_kit/users/api.py index 7d6384ce..20bb5b35 100644 --- a/cds_migrator_kit/users/api.py +++ b/cds_migrator_kit/users/api.py @@ -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 diff --git a/cds_migrator_kit/users/load.py b/cds_migrator_kit/users/load.py index 60ce2059..9135b8fe 100644 --- a/cds_migrator_kit/users/load.py +++ b/cds_migrator_kit/users/load.py @@ -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"] @@ -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, diff --git a/tests/cds-rdm/test_full_migration.py b/tests/cds-rdm/test_full_migration.py index a1de031e..4222bd65 100644 --- a/tests/cds-rdm/test_full_migration.py +++ b/tests/cds-rdm/test_full_migration.py @@ -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 @@ -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 @@ -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 @@ -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 @@ -550,3 +557,5 @@ def remote_account_metadata(): "note": "MIGRATED INACTIVE ACCOUNT", } } + + assert user.user_profile == {"full_name": "Mendoza Diego", "person_id": "11115"}