From 2add56cfd28bd76f51f6488fd7cfe28c729d539d Mon Sep 17 00:00:00 2001 From: Hagellach37 Date: Mon, 2 Dec 2024 16:26:53 +0100 Subject: [PATCH 1/2] run scripts only for affected users --- .../add_missing_usernames_in_firebase.py | 56 +++++++++++++++++++ ...ate_task_contribution_count_in_firebase.py | 42 ++++++++++---- 2 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py diff --git a/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py b/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py new file mode 100644 index 000000000..10ab3c606 --- /dev/null +++ b/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py @@ -0,0 +1,56 @@ +from firebase_admin import auth + +from mapswipe_workers.auth import firebaseDB, postgresDB +from mapswipe_workers.definitions import logger + + +def update_username(uid): + """Set username in Firebase DB based on auth.display_name for user id.""" + fb_db = firebaseDB() + try: + user = auth.get_user(uid) + username = user.display_name + # only set username for users with display_name + if not username: + logger.info(f"user {uid} has no display_name in firebase.") + else: + ref = fb_db.reference(f"v2/users/{user.uid}/username") + ref.set(username) + logger.info(f"updated username for user {uid}: {username}") + except auth.UserNotFoundError: + logger.info(f"could not find user {uid} in firebase to update username.") + + +def get_all_affected_users(): + """Get the user ids from all users in Firebase DB.""" + p_con = postgresDB() + + query = """ + select + user_id + from users u + where 1=1 + and username = '' + and user_id not LIKE 'osm:%' + ; + """ + + try: + data = p_con.retr_query(query) + uid_list = [item[0] for item in data] + logger.info(f"Got all {len(uid_list)} users from postgres DB.") + except Exception as e: + logger.exception(e) + logger.warning( + f"Could NOT update task contribution count for user in Firebase." + ) + + return uid_list + + +if __name__ == "__main__": + """Get all user ids from Firebase and update username based on auth.display_name.""" + uid_list = get_all_affected_users() + + for uid in uid_list: + update_username(uid) diff --git a/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py b/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py index 5b7dc5162..a2437d56c 100644 --- a/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py +++ b/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py @@ -1,5 +1,4 @@ -from mapswipe_workers.auth import firebaseDB -from mapswipe_workers.auth import postgresDB +from mapswipe_workers.auth import firebaseDB, postgresDB from mapswipe_workers.definitions import logger @@ -20,23 +19,46 @@ def update_task_contribution_count(uid): task_contribution_count = data[0][0] ref = fb_db.reference(f"v2/users/{uid}/taskContributionCount") ref.set(task_contribution_count) - logger.info(f"Updated task contribution count to {task_contribution_count} for user {uid} in Firebase.") + logger.info( + f"Updated task contribution count to {task_contribution_count} for user {uid} in Firebase." + ) except Exception as e: logger.exception(e) - logger.warning(f"Could NOT update task contribution count for user {uid} in Firebase.") + logger.warning( + f"Could NOT update task contribution count for user {uid} in Firebase." + ) -def get_all_users(): +def get_all_affected_users(): """Get the user ids from all users in Firebase DB.""" - fb_db = firebaseDB() - users = fb_db.reference("v2/users/").get(shallow=True) - uid_list = users.keys() + p_con = postgresDB() + + query = """ + select + user_id + from users u + where 1=1 + and username = '' + and user_id not LIKE 'osm:%' + ; + """ + + try: + data = p_con.retr_query(query) + uid_list = [item[0] for item in data] + logger.info(f"Got all {len(uid_list)} users from postgres DB.") + except Exception as e: + logger.exception(e) + logger.warning( + f"Could NOT update task contribution count for user in Firebase." + ) + return uid_list if __name__ == "__main__": """Get all user ids from Firebase and update taskContributionCount based on Postgres mapping_sessions.""" - uid_list = get_all_users() + uid_list = get_all_affected_users() + for uid in uid_list: update_task_contribution_count(uid) - From 74887414ed17e3e56c71da7075fff0e19f8bbbea Mon Sep 17 00:00:00 2001 From: Hagellach37 Date: Mon, 2 Dec 2024 16:32:50 +0100 Subject: [PATCH 2/2] fix log message --- .../python_scripts/add_missing_usernames_in_firebase.py | 2 +- .../update_task_contribution_count_in_firebase.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py b/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py index 10ab3c606..182363fa0 100644 --- a/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py +++ b/mapswipe_workers/python_scripts/add_missing_usernames_in_firebase.py @@ -42,7 +42,7 @@ def get_all_affected_users(): except Exception as e: logger.exception(e) logger.warning( - f"Could NOT update task contribution count for user in Firebase." + f"Could NOT get affected users from postgres." ) return uid_list diff --git a/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py b/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py index a2437d56c..79f0610cc 100644 --- a/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py +++ b/mapswipe_workers/python_scripts/update_task_contribution_count_in_firebase.py @@ -50,7 +50,7 @@ def get_all_affected_users(): except Exception as e: logger.exception(e) logger.warning( - f"Could NOT update task contribution count for user in Firebase." + f"Could NOT get affected users from posgres." ) return uid_list