comparison rhodecode/model/user.py @ 2124:273ce1a99c3f beta

fixed #397 Private repository groups shows up before login - added relevant test for this issue
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 13 Mar 2012 02:39:31 +0200
parents 8ecfed1d8f8b
children 43481c3d70ca
comparison
equal deleted inserted replaced
2123:f47f27a6b54e 2124:273ce1a99c3f
296 user = self.__get_user(user) 296 user = self.__get_user(user)
297 297
298 try: 298 try:
299 if user.username == 'default': 299 if user.username == 'default':
300 raise DefaultUserException( 300 raise DefaultUserException(
301 _("You can't remove this user since it's" 301 _("You can't remove this user since it's"
302 " crucial for entire application")) 302 " crucial for entire application")
303 )
303 if user.repositories: 304 if user.repositories:
304 raise UserOwnsReposException(_('This user still owns %s ' 305 raise UserOwnsReposException(
305 'repositories and cannot be ' 306 _('user "%s" still owns %s repositories and cannot be '
306 'removed. Switch owners or ' 307 'removed. Switch owners or remove those repositories')
307 'remove those repositories') \ 308 % (user.username, user.repositories)
308 % user.repositories) 309 )
309 self.sa.delete(user) 310 self.sa.delete(user)
310 except: 311 except:
311 log.error(traceback.format_exc()) 312 log.error(traceback.format_exc())
312 raise 313 raise
313 314
498 # user repositories groups 499 # user repositories groups
499 user_repo_groups_perms = \ 500 user_repo_groups_perms = \
500 self.sa.query(UserRepoGroupToPerm, Permission, RepoGroup)\ 501 self.sa.query(UserRepoGroupToPerm, Permission, RepoGroup)\
501 .join((RepoGroup, UserRepoGroupToPerm.group_id == RepoGroup.group_id))\ 502 .join((RepoGroup, UserRepoGroupToPerm.group_id == RepoGroup.group_id))\
502 .join((Permission, UserRepoGroupToPerm.permission_id == Permission.permission_id))\ 503 .join((Permission, UserRepoGroupToPerm.permission_id == Permission.permission_id))\
503 .filter(UserRepoToPerm.user_id == uid)\ 504 .filter(UserRepoGroupToPerm.user_id == uid)\
504 .all() 505 .all()
505 506
506 for perm in user_repo_groups_perms: 507 for perm in user_repo_groups_perms:
507 rg_k = perm.UserRepoGroupToPerm.group.group_name 508 rg_k = perm.UserRepoGroupToPerm.group.group_name
508 p = perm.Permission.permission_name 509 p = perm.Permission.permission_name
509 cur_perm = user.permissions[GK][rg_k] 510 cur_perm = user.permissions[GK][rg_k]
510 if PERM_WEIGHTS[p] > PERM_WEIGHTS[cur_perm]: 511 if PERM_WEIGHTS[p] > PERM_WEIGHTS[cur_perm]:
511 user.permissions[GK][rg_k] = p 512 user.permissions[GK][rg_k] = p
512
513 return user 513 return user
514 514
515 def has_perm(self, user, perm): 515 def has_perm(self, user, perm):
516 if not isinstance(perm, Permission): 516 if not isinstance(perm, Permission):
517 raise Exception('perm needs to be an instance of Permission class ' 517 raise Exception('perm needs to be an instance of Permission class '