# HG changeset patch # User Marcin Kuzminski # Date 1303152937 -7200 # Node ID d534aff5e82a4c72e731710eb939fe627c915204 # Parent a1bcfe58a1abd2b1fe468e3982a9a2e3233f21c6 user defined permission will update the global permissions, and overwrite default settings. diff -r a1bcfe58a1ab -r d534aff5e82a rhodecode/model/user.py --- a/rhodecode/model/user.py Mon Apr 18 20:18:12 2011 +0200 +++ b/rhodecode/model/user.py Mon Apr 18 20:55:37 2011 +0200 @@ -39,11 +39,15 @@ log = logging.getLogger(__name__) + +PERM_ = '' + PERM_WEIGHTS = {'repository.none':0, 'repository.read':1, 'repository.write':3, 'repository.admin':3} + class UserModel(BaseModel): def get(self, user_id, cache=False): @@ -260,9 +264,9 @@ user.permissions['repositories'] = {} user.permissions['global'] = set() - #=========================================================================== + #====================================================================== # fetch default permissions - #=========================================================================== + #====================================================================== default_user = self.get_by_username('default', cache=True) default_perms = self.sa.query(RepoToPerm, Repository, Permission)\ @@ -271,9 +275,9 @@ .filter(RepoToPerm.user == default_user).all() if user.is_admin: - #======================================================================= + #================================================================== # #admin have all default rights set to admin - #======================================================================= + #================================================================== user.permissions['global'].add('hg.admin') for perm in default_perms: @@ -281,14 +285,13 @@ user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p else: - #======================================================================= + #================================================================== # set default permissions - #======================================================================= + #================================================================== #default global default_global_perms = self.sa.query(UserToPerm)\ - .filter(UserToPerm.user == self.sa.query(User)\ - .filter(User.username == 'default').one()) + .filter(UserToPerm.user == User.by_username('default')) for perm in default_global_perms: user.permissions['global'].add(perm.permission.permission_name) @@ -306,15 +309,23 @@ user.permissions['repositories'][perm.RepoToPerm.repository.repo_name] = p - #======================================================================= + #================================================================== # overwrite default with user permissions if any - #======================================================================= - user_perms = self.sa.query(RepoToPerm, Permission, Repository)\ + #================================================================== + + user_perms = self.sa.query(UserToPerm)\ + .filter(UserToPerm.user == + User.get(user.user_id)).all() + + for perm in user_perms: + user.permissions['global'].add(perm.permission.permission_name) + + user_repo_perms = self.sa.query(RepoToPerm, Permission, Repository)\ .join((Repository, RepoToPerm.repository_id == Repository.repo_id))\ .join((Permission, RepoToPerm.permission_id == Permission.permission_id))\ .filter(RepoToPerm.user_id == user.user_id).all() - for perm in user_perms: + for perm in user_repo_perms: if perm.Repository.user_id == user.user_id:#set admin if owner p = 'repository.admin' else: