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'])