aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/model/repo.py
diff options
context:
space:
mode:
Diffstat (limited to 'rhodecode/model/repo.py')
-rw-r--r--rhodecode/model/repo.py25
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