Mercurial > kallithea
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, |