@@ -17,6 +17,7 @@ news
- #574 Show pull request status also in shortlog (if any)
- remember selected tab in my account page
- Bumped mercurial version to 2.3.2
- #595 rcextension hook for repository delete
fixes
+++++
@@ -40,12 +40,38 @@ def _crhook(*args, **kwargs):
:param group_id:
:param created_by:
"""
return 0
CREATE_REPO_HOOK = _crhook
#==============================================================================
# POST DELETE REPOSITORY HOOK
# this function will be executed after each repository deletion
def _dlhook(*args, **kwargs):
Post create repository HOOK
kwargs available:
:param repo_name:
:param repo_type:
:param description:
:param private:
:param created_on:
:param enable_downloads:
:param repo_id:
:param user_id:
:param enable_statistics:
:param clone_uri:
:param fork_id:
:param deleted_by:
:param deleted_on:
DELETE_REPO_HOOK = _dlhook
# POST PUSH HOOK
@@ -24,6 +24,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import sys
import time
import binascii
from inspect import isfunction
@@ -38,6 +39,7 @@ from rhodecode.lib.exceptions import HTT
from rhodecode.lib.utils2 import safe_str
from rhodecode.model.db import Repository, User
def _get_scm_size(alias, root_path):
if not alias.startswith('.'):
@@ -262,7 +264,6 @@ def log_create_repository(repository_dic
: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:
@@ -291,6 +292,45 @@ def log_create_repository(repository_dic
def log_delete_repository(repository_dict, deleted_by, **kwargs):
Post delete repository 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 deleted_by: username who deleted the repository
'repo_type',
'description',
'private',
'created_on',
'enable_downloads',
'repo_id',
'user_id',
'enable_statistics',
'clone_uri',
'fork_id',
'group_id',
'repo_name'
from rhodecode import EXTENSIONS
callback = getattr(EXTENSIONS, 'DELETE_REPO_HOOK', None)
if isfunction(callback):
kw = {}
kw.update(repository_dict)
kw.update({'deleted_by': deleted_by,
'deleted_on': time.time()})
kw.update(kwargs)
return callback(**kw)
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:
@@ -33,7 +33,7 @@ from rhodecode.lib.vcs.backends import g
from rhodecode.lib.compat import json
from rhodecode.lib.utils2 import LazyProperty, safe_str, safe_unicode
from rhodecode.lib.caching_query import FromCache
from rhodecode.lib.hooks import log_create_repository
from rhodecode.lib.hooks import log_create_repository, log_delete_repository
from rhodecode.model import BaseModel
from rhodecode.model.db import Repository, UserRepoToPerm, User, Permission, \
@@ -336,9 +336,13 @@ class RepoModel(BaseModel):
def delete(self, repo):
repo = self._get_repo(repo)
if repo:
old_repo_dict = repo.get_dict()
owner = repo.user
try:
self.sa.delete(repo)
self.__delete_repo(repo)
log_delete_repository(old_repo_dict,
deleted_by=owner.username)
except:
log.error(traceback.format_exc())
raise
Status change: