aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStevan Radaković <stevan.radakovic@linaro.org>2013-03-28 14:43:44 +0100
committerStevan Radaković <stevan.radakovic@linaro.org>2013-03-28 14:43:44 +0100
commit204b78ca58e8c890ed6851a5b65aa2845a2e39d4 (patch)
tree60072902e91eae1d7bd26a81638738f703ee5045
parentedd66f777e3f5217bb36706813d83cb2bdd4be7e (diff)
Add system group operations for repositories. Change ownership once group is created.
-rw-r--r--rhodecode/model/repo.py18
-rw-r--r--rhodecode/model/repos_group.py5
2 files changed, 22 insertions, 1 deletions
diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py
index 79d68e9f..482b1df4 100644
--- a/rhodecode/model/repo.py
+++ b/rhodecode/model/repo.py
@@ -28,6 +28,7 @@ import shutil
import logging
import traceback
from datetime import datetime
+from grp import getgrnam
from rhodecode.lib.vcs.backends import get_backend
from rhodecode.lib.compat import json
@@ -316,6 +317,12 @@ class RepoModel(BaseModel):
self.sa.add(cur_repo)
+ old_system_name = "%s-%s" % (org_repo_name.rsplit("/",1)[0],
+ cur_repo.repo_id)
+ new_system_name = "%s-%s" % (new_name.rsplit("/",1)[0],
+ cur_repo.repo_id)
+ SystemCommand.rename_group(old_system_name, new_system_name)
+
if org_repo_name != new_name:
# rename repository
self.__rename_repo(old=org_repo_name, new=new_name)
@@ -371,6 +378,13 @@ class RepoModel(BaseModel):
self.sa.add(new_repo)
+ system_group_name = "%s-%s" % (new_repo.repo_name.rsplit("/",1)[0],
+ new_repo.repo_id)
+ SystemCommand.add_group(system_group_name)
+ create_path = os.path.join(self.repos_path, new_repo.repo_name)
+ os.chmod(create_path, 0775)
+ os.chown(create_path, -1, getgrnam(system_group_name).gr_gid)
+
def _create_default_perms():
# create default permission
repo_to_perm = UserRepoToPerm()
@@ -720,3 +734,7 @@ class RepoModel(BaseModel):
args = repo.group.full_path_splitted + [_d]
_d = os.path.join(*args)
shutil.move(rm_path, os.path.join(self.repos_path, _d))
+
+ system_group_name = "%s-%s" % (repo.repo_name.rsplit("/",1)[0],
+ repo.repo_id)
+ SystemCommand.delete_group(system_group_name)
diff --git a/rhodecode/model/repos_group.py b/rhodecode/model/repos_group.py
index 22b76f4a..6c7220fe 100644
--- a/rhodecode/model/repos_group.py
+++ b/rhodecode/model/repos_group.py
@@ -28,6 +28,7 @@ import logging
import traceback
import shutil
import datetime
+from grp import getgrnam
from rhodecode.lib.utils2 import LazyProperty
from rhodecode.lib.system_command import SystemCommand
@@ -93,7 +94,6 @@ class ReposGroupModel(BaseModel):
raise Exception('That directory already exists !')
os.makedirs(create_path)
- os.chmod(create_path, 0775)
def __rename_group(self, old, new):
"""
@@ -166,6 +166,9 @@ class ReposGroupModel(BaseModel):
system_group_name = "%s-%s" % (group_name.rsplit("/",1)[0],
new_repos_group.group_id)
SystemCommand.add_group(system_group_name)
+ create_path = os.path.join(self.repos_path, group_name)
+ os.chmod(create_path, 0775)
+ os.chown(create_path, -1, getgrnam(system_group_name).gr_gid)
return new_repos_group
except: