Mercurial > kallithea
changeset 4016:cce2d984b001
User create/delete hooks for rcextensions.
When a user is created or deleted, the CREATE_USER_HOOK or DELETE_USER_HOOK
are called as part of the log_create_user and log_delete_user functions
respectively. This is similar to the existing log_create_repository and
log_delete_repository functions that already exist as part of the rcextensions
module.
author | Jonathan Sternberg <jonathansternberg@gmail.com> |
---|---|
date | Mon, 17 Jun 2013 18:09:50 -0400 |
parents | 669721d1fe65 |
children | 509923dac48d |
files | rhodecode/config/rcextensions/__init__.py rhodecode/lib/hooks.py rhodecode/model/user.py |
diffstat | 3 files changed, 163 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/config/rcextensions/__init__.py Tue Jun 18 16:39:59 2013 +0200 +++ b/rhodecode/config/rcextensions/__init__.py Mon Jun 17 18:09:50 2013 -0400 @@ -30,7 +30,7 @@ # POST CREATE REPOSITORY HOOK #============================================================================== # this function will be executed after each repository is created -def _crhook(*args, **kwargs): +def _crrepohook(*args, **kwargs): """ Post create repository HOOK kwargs available: @@ -49,16 +49,48 @@ :param created_by: """ return 0 -CREATE_REPO_HOOK = _crhook +CREATE_REPO_HOOK = _crrepohook + + +#============================================================================== +# POST CREATE USER HOOK +#============================================================================== +# this function will be executed after each user is created +def _cruserhook(*args, **kwargs): + """ + Post create user HOOK + kwargs available: + :param username: + :param full_name_or_username: + :param full_contact: + :param user_id: + :param name: + :param firstname: + :param short_contact: + :param admin: + :param lastname: + :param ip_addresses: + :param ldap_dn: + :param email: + :param api_key: + :param last_login: + :param full_name: + :param active: + :param password: + :param emails: + :param inherit_default_permissions: + """ + return 0 +CREATE_USER_HOOK = _cruserhook #============================================================================== # POST DELETE REPOSITORY HOOK #============================================================================== # this function will be executed after each repository deletion -def _dlhook(*args, **kwargs): +def _dlrepohook(*args, **kwargs): """ - Post create repository HOOK + Post delete repository HOOK kwargs available: :param repo_name: :param repo_type: @@ -76,7 +108,39 @@ :param deleted_on: """ return 0 -DELETE_REPO_HOOK = _dlhook +DELETE_REPO_HOOK = _dlrepohook + + +#============================================================================== +# POST DELETE USER HOOK +#============================================================================== +# this function will be executed after each user is deleted +def _dluserhook(*args, **kwargs): + """ + Post delete user HOOK + kwargs available: + :param username: + :param full_name_or_username: + :param full_contact: + :param user_id: + :param name: + :param firstname: + :param short_contact: + :param admin: + :param lastname: + :param ip_addresses: + :param ldap_dn: + :param email: + :param api_key: + :param last_login: + :param full_name: + :param active: + :param password: + :param emails: + :param inherit_default_permissions: + """ + return 0 +DELETE_USER_HOOK = _dluserhook #==============================================================================
--- a/rhodecode/lib/hooks.py Tue Jun 18 16:39:59 2013 +0200 +++ b/rhodecode/lib/hooks.py Mon Jun 17 18:09:50 2013 -0400 @@ -252,6 +252,45 @@ return 0 +def log_create_user(user_dict, **kwargs): + """ + Post create user Hook. This is a dummy function for admins to re-use + if needed. It's taken from rhodecode-extensions module and executed + if present + + :param user_dict: dict dump of user object + + available keys for user_dict: + + 'username', + 'full_name_or_username', + 'full_contact', + 'user_id', + 'name', + 'firstname', + 'short_contact', + 'admin', + 'lastname', + 'ip_addresses', + 'ldap_dn', + 'email', + 'api_key', + 'last_login', + 'full_name', + 'active', + 'password', + 'emails', + 'inherit_default_permissions' + + """ + from rhodecode import EXTENSIONS + callback = getattr(EXTENSIONS, 'CREATE_USER_HOOK', None) + if isfunction(callback): + return callback(**user_dict) + + return 0 + + def log_delete_repository(repository_dict, deleted_by, **kwargs): """ Post delete repository Hook. This is a dummy function for admins to re-use @@ -290,6 +329,45 @@ return 0 +def log_delete_user(user_dict, **kwargs): + """ + Post delete user Hook. This is a dummy function for admins to re-use + if needed. It's taken from rhodecode-extensions module and executed + if present + + :param user_dict: dict dump of user object + + available keys for user_dict: + + 'username', + 'full_name_or_username', + 'full_contact', + 'user_id', + 'name', + 'firstname', + 'short_contact', + 'admin', + 'lastname', + 'ip_addresses', + 'ldap_dn', + 'email', + 'api_key', + 'last_login', + 'full_name', + 'active', + 'password', + 'emails', + 'inherit_default_permissions' + + """ + from rhodecode import EXTENSIONS + callback = getattr(EXTENSIONS, 'DELETE_USER_HOOK', None) + if isfunction(callback): + return callback(**user_dict) + + return 0 + + handle_git_pre_receive = (lambda repo_path, revs, env: handle_git_receive(repo_path, revs, env, hook_type='pre')) handle_git_post_receive = (lambda repo_path, revs, env:
--- a/rhodecode/model/user.py Tue Jun 18 16:39:59 2013 +0200 +++ b/rhodecode/model/user.py Mon Jun 17 18:09:50 2013 -0400 @@ -94,6 +94,9 @@ new_user.api_key = generate_api_key(form_data['username']) self.sa.add(new_user) + + from rhodecode.lib.hooks import log_create_user + log_create_user(new_user.get_dict()) return new_user except Exception: log.error(traceback.format_exc()) @@ -141,6 +144,10 @@ new_user.name = firstname new_user.lastname = lastname self.sa.add(new_user) + + if not edit: + from rhodecode.lib.hooks import log_create_user + log_create_user(new_user.get_dict()) return new_user except (DatabaseError,): log.error(traceback.format_exc()) @@ -169,6 +176,9 @@ new_user.lastname = attrs['lastname'] self.sa.add(new_user) + + from rhodecode.lib.hooks import log_create_user + log_create_user(new_user.get_dict()) return new_user except (DatabaseError,): log.error(traceback.format_exc()) @@ -209,6 +219,9 @@ new_user.lastname = attrs['lastname'] self.sa.add(new_user) + + from rhodecode.lib.hooks import log_create_user + log_create_user(new_user.get_dict()) return new_user except (DatabaseError,): log.error(traceback.format_exc()) @@ -311,6 +324,9 @@ % (user.username, len(repos), ', '.join(repos)) ) self.sa.delete(user) + + from rhodecode.lib.hooks import log_delete_user + log_delete_user(user.get_dict()) except Exception: log.error(traceback.format_exc()) raise