Mercurial > kallithea
comparison rhodecode/model/repo.py @ 3628:c734686b3cf2 beta
moved permission management into separate entity.
- this solves issues when whole form submision could influence permission management
particular case is that when repo group permission is revoked and user is no longer able to update repository settings
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Thu, 28 Mar 2013 02:11:26 +0100 |
parents | 8087731920d8 |
children | 802c94bdfc85 |
comparison
equal
deleted
inserted
replaced
3627:32cb8d45f330 | 3628:c734686b3cf2 |
---|---|
277 | 277 |
278 def update(self, org_repo_name, **kwargs): | 278 def update(self, org_repo_name, **kwargs): |
279 try: | 279 try: |
280 cur_repo = self.get_by_repo_name(org_repo_name, cache=False) | 280 cur_repo = self.get_by_repo_name(org_repo_name, cache=False) |
281 | 281 |
282 # update permissions | |
283 for member, perm, member_type in kwargs['perms_updates']: | |
284 if member_type == 'user': | |
285 # this updates existing one | |
286 RepoModel().grant_user_permission( | |
287 repo=cur_repo, user=member, perm=perm | |
288 ) | |
289 else: | |
290 RepoModel().grant_users_group_permission( | |
291 repo=cur_repo, group_name=member, perm=perm | |
292 ) | |
293 # set new permissions | |
294 for member, perm, member_type in kwargs['perms_new']: | |
295 if member_type == 'user': | |
296 RepoModel().grant_user_permission( | |
297 repo=cur_repo, user=member, perm=perm | |
298 ) | |
299 else: | |
300 RepoModel().grant_users_group_permission( | |
301 repo=cur_repo, group_name=member, perm=perm | |
302 ) | |
303 | |
304 if 'user' in kwargs: | 282 if 'user' in kwargs: |
305 cur_repo.user = User.get_by_username(kwargs['user']) | 283 cur_repo.user = User.get_by_username(kwargs['user']) |
306 | 284 |
307 if 'repo_group' in kwargs: | 285 if 'repo_group' in kwargs: |
308 cur_repo.group = RepoGroup.get(kwargs['repo_group']) | 286 cur_repo.group = RepoGroup.get(kwargs['repo_group']) |