comparison rhodecode/lib/utils.py @ 735:dbec976d9975 beta

added action loggers to following repositories, refactoring of repo_model get functions
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 22 Nov 2010 15:49:04 +0100
parents a9bc513a1fe3
children 01be209b9828
comparison
equal deleted inserted replaced
734:49eb69d78988 735:dbec976d9975
68 return True 68 return True
69 return False 69 return False
70 70
71 def action_logger(user, action, repo, ipaddr='', sa=None): 71 def action_logger(user, action, repo, ipaddr='', sa=None):
72 """ 72 """
73 Action logger for various action made by users 73 Action logger for various actions made by users
74 74
75 :param user: user that made this action, can be a string unique username or 75 :param user: user that made this action, can be a unique username string or
76 object containing user_id attribute 76 object containing user_id attribute
77 :param action: action to log, should be on of predefined unique actions for 77 :param action: action to log, should be on of predefined unique actions for
78 easy translations 78 easy translations
79 :param repo: repository that action was made on 79 :param repo: string name of repository or object containing repo_id,
80 that action was made on
80 :param ipaddr: optional ip address from what the action was made 81 :param ipaddr: optional ip address from what the action was made
81 :param sa: optional sqlalchemy session 82 :param sa: optional sqlalchemy session
82 83
83 """ 84 """
84 85
85 if not sa: 86 if not sa:
86 sa = meta.Session() 87 sa = meta.Session()
87 88
88 try: 89 try:
90 um = UserModel()
89 if hasattr(user, 'user_id'): 91 if hasattr(user, 'user_id'):
90 user_obj = user 92 user_obj = user
91 elif isinstance(user, basestring): 93 elif isinstance(user, basestring):
92 user_obj = UserModel().get_by_username(user, cache=False) 94 user_obj = um.get_by_username(user, cache=False)
93 else: 95 else:
94 raise Exception('You have to provide user object or username') 96 raise Exception('You have to provide user object or username')
95 97
96 98
97 if repo: 99 rm = RepoModel()
100 if hasattr(repo, 'repo_id'):
101 repo_obj = rm.get(repo.repo_id, cache=False)
102 repo_name = repo_obj.repo_name
103 elif isinstance(repo, basestring):
98 repo_name = repo.lstrip('/') 104 repo_name = repo.lstrip('/')
99 105 repo_obj = rm.get_by_repo_name(repo_name, cache=False)
100 repository = RepoModel().get(repo_name, cache=False)
101 if not repository:
102 raise Exception('You have to provide valid repository')
103 else: 106 else:
104 raise Exception('You have to provide repository to action logger') 107 raise Exception('You have to provide repository to action logger')
105 108
106 109
107 user_log = UserLog() 110 user_log = UserLog()
108 user_log.user_id = user_obj.user_id 111 user_log.user_id = user_obj.user_id
109 user_log.action = action 112 user_log.action = action
113
114 user_log.repository_id = repo_obj.repo_id
110 user_log.repository_name = repo_name 115 user_log.repository_name = repo_name
111 user_log.repository = repository 116
112 user_log.action_date = datetime.datetime.now() 117 user_log.action_date = datetime.datetime.now()
113 user_log.user_ip = ipaddr 118 user_log.user_ip = ipaddr
114 sa.add(user_log) 119 sa.add(user_log)
115 sa.commit() 120 sa.commit()
116 121
350 sa = meta.Session() 355 sa = meta.Session()
351 rm = RepoModel() 356 rm = RepoModel()
352 user = sa.query(User).filter(User.admin == True).first() 357 user = sa.query(User).filter(User.admin == True).first()
353 358
354 for name, repo in initial_repo_list.items(): 359 for name, repo in initial_repo_list.items():
355 if not rm.get(name, cache=False): 360 if not rm.get_by_repo_name(name, cache=False):
356 log.info('repository %s not found creating default', name) 361 log.info('repository %s not found creating default', name)
357 362
358 form_data = { 363 form_data = {
359 'repo_name':name, 364 'repo_name':name,
360 'repo_type':repo.alias, 365 'repo_type':repo.alias,