comparison rhodecode/lib/hooks.py @ 2165:dc2584ba5fbc

merged beta into default branch
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 28 Mar 2012 19:54:16 +0200
parents 82a88013a3fd 8ecfed1d8f8b
children a437a986d399
comparison
equal deleted inserted replaced
2097:8fd6650bb436 2165:dc2584ba5fbc
25 import os 25 import os
26 import sys 26 import sys
27 27
28 from mercurial.scmutil import revrange 28 from mercurial.scmutil import revrange
29 from mercurial.node import nullrev 29 from mercurial.node import nullrev
30 30 from rhodecode import EXTENSIONS
31 from rhodecode.lib import helpers as h 31 from rhodecode.lib import helpers as h
32 from rhodecode.lib.utils import action_logger 32 from rhodecode.lib.utils import action_logger
33 from inspect import isfunction
33 34
34 35
35 def repo_size(ui, repo, hooktype=None, **kwargs): 36 def repo_size(ui, repo, hooktype=None, **kwargs):
36 """ 37 """
37 Presents size of repository after push 38 Presents size of repository after push
76 77
77 :param ui: 78 :param ui:
78 :param repo: 79 :param repo:
79 """ 80 """
80 81
81 extra_params = dict(repo.ui.configitems('rhodecode_extras')) 82 extras = dict(repo.ui.configitems('rhodecode_extras'))
82 username = extra_params['username'] 83 username = extras['username']
83 repository = extra_params['repository'] 84 repository = extras['repository']
84 action = 'pull' 85 action = 'pull'
85 86
86 action_logger(username, action, repository, extra_params['ip'], 87 action_logger(username, action, repository, extras['ip'], commit=True)
87 commit=True) 88 # extension hook call
89 callback = getattr(EXTENSIONS, 'PULL_HOOK', None)
88 90
91 if isfunction(callback):
92 kw = {}
93 kw.update(extras)
94 callback(**kw)
89 return 0 95 return 0
90 96
91 97
92 def log_push_action(ui, repo, **kwargs): 98 def log_push_action(ui, repo, **kwargs):
93 """ 99 """
95 101
96 :param ui: 102 :param ui:
97 :param repo: 103 :param repo:
98 """ 104 """
99 105
100 extra_params = dict(repo.ui.configitems('rhodecode_extras')) 106 extras = dict(repo.ui.configitems('rhodecode_extras'))
101 username = extra_params['username'] 107 username = extras['username']
102 repository = extra_params['repository'] 108 repository = extras['repository']
103 action = extra_params['action'] + ':%s' 109 action = extras['action'] + ':%s'
104 node = kwargs['node'] 110 node = kwargs['node']
105 111
106 def get_revs(repo, rev_opt): 112 def get_revs(repo, rev_opt):
107 if rev_opt: 113 if rev_opt:
108 revs = revrange(repo, rev_opt) 114 revs = revrange(repo, rev_opt)
117 123
118 revs = (str(repo[r]) for r in xrange(start, stop + 1)) 124 revs = (str(repo[r]) for r in xrange(start, stop + 1))
119 125
120 action = action % ','.join(revs) 126 action = action % ','.join(revs)
121 127
122 action_logger(username, action, repository, extra_params['ip'], 128 action_logger(username, action, repository, extras['ip'], commit=True)
123 commit=True)
124 129
130 # extension hook call
131 callback = getattr(EXTENSIONS, 'PUSH_HOOK', None)
132 if isfunction(callback):
133 kw = {'pushed_revs': revs}
134 kw.update(extras)
135 callback(**kw)
125 return 0 136 return 0
126 137
127 138
128 def log_create_repository(repository_dict, created_by, **kwargs): 139 def log_create_repository(repository_dict, created_by, **kwargs):
129 """ 140 """
130 Post create repository Hook. This is a dummy function for admins to re-use 141 Post create repository Hook. This is a dummy function for admins to re-use
131 if needed 142 if needed. It's taken from rhodecode-extensions module and executed
143 if present
132 144
133 :param repository: dict dump of repository object 145 :param repository: dict dump of repository object
134 :param created_by: username who created repository 146 :param created_by: username who created repository
135 :param created_date: date of creation 147 :param created_date: date of creation
136 148
149 'group_id', 161 'group_id',
150 'repo_name' 162 'repo_name'
151 163
152 """ 164 """
153 165
166 callback = getattr(EXTENSIONS, 'CREATE_REPO_HOOK', None)
167 if isfunction(callback):
168 kw = {}
169 kw.update(repository_dict)
170 kw.update({'created_by': created_by})
171 kw.update(kwargs)
172 return callback(**kw)
154 173
155 return 0 174 return 0