Mercurial > kallithea
diff pylons_app/lib/hooks.py @ 503:3d6d548ad3cc
Added user action mapper to map push to changeset.
made exception in simplehg python 2.5 ready
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 24 Sep 2010 18:13:29 +0200 |
parents | b27d32cb3157 |
children | 39203995f2c4 |
line wrap: on
line diff
--- a/pylons_app/lib/hooks.py Thu Sep 23 21:25:30 2010 +0200 +++ b/pylons_app/lib/hooks.py Fri Sep 24 18:13:29 2010 +0200 @@ -26,12 +26,13 @@ import sys import os from pylons_app.lib import helpers as h +from pylons_app.model import meta +from pylons_app.model.db import UserLog, User def repo_size(ui, repo, hooktype=None, **kwargs): if hooktype != 'changegroup': return False - size_hg, size_root = 0, 0 for path, dirs, files in os.walk(repo.root): if path.find('.hg') != -1: @@ -43,6 +44,35 @@ size_hg_f = h.format_byte_size(size_hg) size_root_f = h.format_byte_size(size_root) - size_total_f = h.format_byte_size(size_root + size_hg) + size_total_f = h.format_byte_size(size_root + size_hg) sys.stdout.write('Repository size .hg:%s repo:%s total:%s\n' \ % (size_hg_f, size_root_f, size_total_f)) + + user_action_mapper(ui, repo, hooktype, **kwargs) + +def user_action_mapper(ui, repo, hooktype=None, **kwargs): + """ + Maps user last push action to new changeset id, from mercurial + @param ui: + @param repo: + @param hooktype: + """ + + try: + sa = meta.Session + username = kwargs['url'].split(':')[-1] + user_log = sa.query(UserLog)\ + .filter(UserLog.user == sa.query(User)\ + .filter(User.username == username).one())\ + .order_by(UserLog.user_log_id.desc()).first() + + if not user_log.revision: + user_log.revision = str(repo['tip']) + sa.add(user_log) + sa.commit() + + except Exception, e: + sa.rollback() + raise + finally: + meta.Session.remove()