From 204b78ca58e8c890ed6851a5b65aa2845a2e39d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stevan=20Radakovi=C4=87?= Date: Thu, 28 Mar 2013 14:43:44 +0100 Subject: Add system group operations for repositories. Change ownership once group is created. --- rhodecode/model/repo.py | 18 ++++++++++++++++++ rhodecode/model/repos_group.py | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) 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: -- cgit v1.2.3