changeset 1972:27abf546aa8a beta

#348 added post-create repository hook
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 31 Jan 2012 04:41:00 +0200
parents 3dd89d30cd28
children 0a46e8f1b7aa
files docs/changelog.rst rhodecode/lib/hooks.py rhodecode/model/repo.py
diffstat 3 files changed, 34 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/docs/changelog.rst	Sat Jan 28 19:57:52 2012 +0200
+++ b/docs/changelog.rst	Tue Jan 31 04:41:00 2012 +0200
@@ -36,6 +36,7 @@
 - added linking of changesets in commit messages  
 - new compact changelog with expandable commit messages
 - firstname and lastname are optional in user creation
+- #348 added post-create repository hook
     
 fixes
 -----
--- a/rhodecode/lib/hooks.py	Sat Jan 28 19:57:52 2012 +0200
+++ b/rhodecode/lib/hooks.py	Tue Jan 31 04:41:00 2012 +0200
@@ -123,3 +123,33 @@
                   commit=True)
 
     return 0
+
+
+def log_create_repository(repository_dict, created_by, **kwargs):
+    """
+    Post create repository Hook. This is a dummy function for admins to re-use
+    if needed
+
+    :param repository: dict dump of repository object 
+    :param created_by: username who created repository
+    :param created_date: date of creation
+
+    available keys of repository_dict:
+
+     'repo_type',
+     'description',
+     'private',
+     'created_on',
+     'enable_downloads',
+     'repo_id',
+     'user_id',
+     'enable_statistics',
+     'clone_uri',
+     'fork_id',
+     'group_id',
+     'repo_name'
+
+    """
+
+
+    return 0
\ No newline at end of file
--- a/rhodecode/model/repo.py	Sat Jan 28 19:57:52 2012 +0200
+++ b/rhodecode/model/repo.py	Tue Jan 31 04:41:00 2012 +0200
@@ -33,6 +33,7 @@
 
 from rhodecode.lib import safe_str
 from rhodecode.lib.caching_query import FromCache
+from rhodecode.lib.hooks import log_create_repository
 
 from rhodecode.model import BaseModel
 from rhodecode.model.db import Repository, UserRepoToPerm, User, Permission, \
@@ -70,7 +71,6 @@
                                           "get_repo_%s" % repo_name))
         return repo.scalar()
 
-
     def get_users_js(self):
 
         users = self.sa.query(User).filter(User.active == True).all()
@@ -131,7 +131,6 @@
 
         return defaults
 
-
     def update(self, repo_name, form_data):
         try:
             cur_repo = self.get_by_repo_name(repo_name, cache=False)
@@ -262,7 +261,6 @@
 
                 self.sa.add(repo_to_perm)
 
-
             if fork:
                 if form_data.get('copy_permissions'):
                     repo = Repository.get(fork_parent_id)
@@ -291,6 +289,8 @@
             # now automatically start following this repository as owner
             ScmModel(self.sa).toggle_following_repo(new_repo.repo_id,
                                                     cur_user.user_id)
+            log_create_repository(new_repo.get_dict(),
+                                  created_by=cur_user.username)
             return new_repo
         except:
             log.error(traceback.format_exc())