diff options
Diffstat (limited to 'rhodecode/model/repo.py')
-rw-r--r-- | rhodecode/model/repo.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py index 18db88ce..b18110c1 100644 --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -508,6 +508,16 @@ class RepoModel(BaseModel): self.sa.add(obj) log.debug('Granted perm %s to %s on %s' % (perm, user, repo)) + system_group_name = "%s-%s" % (repo.repo_name.rsplit("/",1), + repo.repo_id) + SystemCommand.add_user_to_group(system_group_name, user.username) + repo_path = os.path.join(self.repos_path, repo.repo_name) + if user.username=="default": + if perm.permission_name in ["group.none", "group.read"]: + os.chmod(repo_path, 0775) + else: + os.chmod(repo_path, 0777) + def revoke_user_permission(self, repo, user): """ Revoke permission for user on given repository @@ -527,6 +537,10 @@ class RepoModel(BaseModel): self.sa.delete(obj) log.debug('Revoked perm on %s on %s' % (repo, user)) + system_group_name = "%s-%s" % (repo.repo_name.rsplit("/",1), + repo.repo_id) + SystemCommand.remove_user_from_group(system_group_name, user.username) + def grant_users_group_permission(self, repo, group_name, perm): """ Grant permission for users group on given repository, or update @@ -557,6 +571,11 @@ class RepoModel(BaseModel): self.sa.add(obj) log.debug('Granted perm %s to %s on %s' % (perm, group_name, repo)) + system_group_name = "%s-%s" % (repo.repo_name.rsplit("/",1), + repo.repo_id) + for user in group_name.members: + SystemCommand.add_user_to_group(system_group_name, user.username) + def revoke_users_group_permission(self, repo, group_name): """ Revoke permission for users group on given repository @@ -576,6 +595,12 @@ class RepoModel(BaseModel): self.sa.delete(obj) log.debug('Revoked perm to %s on %s' % (repo, group_name)) + system_group_name = "%s-%s" % (repo.repo_name.rsplit("/",1), + repo.repo_id) + for user in group_name.members: + SystemCommand.remove_user_from_group(system_group_name, + user.username) + def delete_stats(self, repo_name): """ removes stats for given repo |