From 0a400fa5b30d22052c8a61f975eaec83644f091c Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Nov 03 2016 20:34:20 +0000 Subject: When an user validate his/her email, update the pagure_logs table if needed Current the pagure_logs table can contain activity from someone we do not know, this activity is then stored as linked to an email. If someone comes and register this email, we can now link the activity to this account. --- diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index c6f34d1..91a3f66 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2311,6 +2311,9 @@ def add_email_to_user(session, user, user_email): email=user_email) session.add(useremail) session.flush() + if email_logs_count(session, user_email): + update_log_email_user(session, user_email, user) + def update_user_ssh(session, user, ssh_key, keydir): @@ -3348,3 +3351,28 @@ def log_action(session, action, obj): session.add(log) session.commit() + + +def email_logs_count(session, email): + """ Returns the number of logs associated with a given email.""" + query = session.query( + model.PagureLog + ).filter( + model.PagureLog.user_email == email + ) + + return query.count() + + +def update_log_email_user(session, email, user): + """ Update the logs with the provided email to point to the specified + user. + """ + session.query( + model.PagureLog + ).filter( + model.PagureLog.user_email == email + ).update( + {model.PagureLog.user_id: user.id}, + synchronize_session=False + )