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: