From 522f374fae31a4282618db98e5be02cab0b97f51 Mon Sep 17 00:00:00 2001 From: Marcin Kuzminski Date: Tue, 8 Oct 2019 14:04:53 +0200 Subject: [PATCH] users: fetch user data for user removal hook, *before* actually marking object for deletion. --- rhodecode/model/user.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rhodecode/model/user.py b/rhodecode/model/user.py index 74f42ceb..38761d87 100644 --- a/rhodecode/model/user.py +++ b/rhodecode/model/user.py @@ -507,6 +507,8 @@ class UserModel(BaseModel): def delete(self, user, cur_user=None, handle_repos=None, handle_repo_groups=None, handle_user_groups=None): + from rhodecode.lib.hooks_base import log_delete_user + if not cur_user: cur_user = getattr( get_current_rhodecode_user(), 'username', None) @@ -547,12 +549,14 @@ class UserModel(BaseModel): u'removed. Switch owners or remove those user groups:%s' % (user.username, len(user_groups), ', '.join(user_groups))) + user_data = user.get_dict() # fetch user data before expire + # we might change the user data with detach/delete, make sure # the object is marked as expired before actually deleting ! self.sa.expire(user) self.sa.delete(user) - from rhodecode.lib.hooks_base import log_delete_user - log_delete_user(deleted_by=cur_user, **user.get_dict()) + + log_delete_user(deleted_by=cur_user, **user_data) except Exception: log.error(traceback.format_exc()) raise