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