Mercurial > kallithea
comparison rhodecode/lib/utils.py @ 654:7f5976da192c beta
#48 rewrite action loggers into hooks with all changesets that are inside a push
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 05 Nov 2010 18:26:26 +0100 |
parents | 9dc1d92d82ed |
children | 36f839886e0d |
comparison
equal
deleted
inserted
replaced
653:4a3291628f09 | 654:7f5976da192c |
---|---|
33 from rhodecode.model.user import UserModel | 33 from rhodecode.model.user import UserModel |
34 from vcs.backends.base import BaseChangeset | 34 from vcs.backends.base import BaseChangeset |
35 from vcs.backends.git import GitRepository | 35 from vcs.backends.git import GitRepository |
36 from vcs.backends.hg import MercurialRepository | 36 from vcs.backends.hg import MercurialRepository |
37 from vcs.utils.lazy import LazyProperty | 37 from vcs.utils.lazy import LazyProperty |
38 import traceback | |
38 import datetime | 39 import datetime |
39 import logging | 40 import logging |
40 import os | 41 import os |
41 | 42 |
42 log = logging.getLogger(__name__) | 43 log = logging.getLogger(__name__) |
75 if not sa: | 76 if not sa: |
76 sa = meta.Session() | 77 sa = meta.Session() |
77 | 78 |
78 try: | 79 try: |
79 if hasattr(user, 'user_id'): | 80 if hasattr(user, 'user_id'): |
80 user_id = user.user_id | 81 user_obj = user |
81 elif isinstance(user, basestring): | 82 elif isinstance(user, basestring): |
82 user_id = UserModel(sa).get_by_username(user, cache=False).user_id | 83 user_obj = UserModel(sa).get_by_username(user, cache=False) |
83 else: | 84 else: |
84 raise Exception('You have to provide user object or username') | 85 raise Exception('You have to provide user object or username') |
85 | 86 |
86 repo_name = repo.lstrip('/') | 87 repo_name = repo.lstrip('/') |
87 user_log = UserLog() | 88 user_log = UserLog() |
88 user_log.user_id = user_id | 89 user_log.user_id = user_obj.user_id |
89 user_log.action = action | 90 user_log.action = action |
90 user_log.repository_name = repo_name | 91 user_log.repository_name = repo_name |
91 user_log.repository = RepoModel(sa).get(repo_name, cache=False) | 92 user_log.repository = RepoModel(sa).get(repo_name, cache=False) |
92 user_log.action_date = datetime.datetime.now() | 93 user_log.action_date = datetime.datetime.now() |
93 user_log.user_ip = ipaddr | 94 user_log.user_ip = ipaddr |
94 sa.add(user_log) | 95 sa.add(user_log) |
95 sa.commit() | 96 sa.commit() |
96 | 97 |
97 log.info('Adding user %s, action %s on %s', | 98 log.info('Adding user %s, action %s on %s', |
98 user.username, action, repo) | 99 user_obj.username, action, repo) |
99 except Exception, e: | 100 except: |
101 log.error(traceback.format_exc()) | |
100 sa.rollback() | 102 sa.rollback() |
101 log.error('could not log user action:%s', str(e)) | |
102 | 103 |
103 def get_repos(path, recursive=False, initial=False): | 104 def get_repos(path, recursive=False, initial=False): |
104 """ | 105 """ |
105 Scans given path for repos and return (name,(type,path)) tuple | 106 Scans given path for repos and return (name,(type,path)) tuple |
106 :param prefix: | 107 :param prefix: |