@@ -482,48 +482,71 @@ For example "foo/bar/baz" will create gr
and create "baz" repository with "bar" as group.
INPUT::
api_key : "<api_key>"
method : "create_repo"
args: {
"repo_name" : "<reponame>",
"owner_name" : "<ownername>",
"description" : "<description> = ''",
"repo_type" : "<type> = 'hg'",
"private" : "<bool> = False"
}
OUTPUT::
result: {
"id": "<newrepoid>",
"msg": "Created new repository <reponame>",
error: null
delete_repo
-----------
Deletes a repository. This command can be executed only using api_key
belonging to user with admin rights.
method : "delete_repo"
"msg": "Deleted repository <reponame>",
grant_user_permission
---------------------
Grant permission for user on given repository, or update existing one
if found. This command can be executed only using api_key belonging to user
with admin rights.
method : "grant_user_permission"
"username" : "<username>",
"perm" : "(repository.(none|read|write|admin))",
"msg" : "Granted perm: <perm> for user: <username> in repo: <reponame>"
@@ -472,48 +472,67 @@ class ApiController(JSONRPCController):
repo = RepoModel().create(
dict(
repo_name=real_name,
repo_name_full=repo_name,
description=description,
private=private,
repo_type=repo_type,
repo_group=parent_id,
clone_uri=None
),
owner
)
Session.commit()
return dict(
id=repo.repo_id,
msg="Created new repository %s" % repo.repo_name
except Exception:
log.error(traceback.format_exc())
raise JSONRPCError('failed to create repository %s' % repo_name)
@HasPermissionAnyDecorator('hg.admin')
def delete_repo(self, apiuser, repo_name):
"""
Deletes a given repository
:param repo_name:
if not Repository.get_by_repo_name(repo_name):
raise JSONRPCError("repo %s does not exist" % repo_name)
try:
RepoModel().delete(repo_name)
msg='Deleted repository %s' % repo_name
raise JSONRPCError('failed to delete repository %s' % repo_name)
def grant_user_permission(self, repo_name, username, perm):
if found
:param username:
:param perm:
repo = Repository.get_by_repo_name(repo_name)
if repo is None:
raise JSONRPCError('unknown repository %s' % repo)
user = User.get_by_username(username)
if user is None:
raise JSONRPCError('unknown user %s' % username)
RepoModel().grant_user_permission(repo=repo, user=user, perm=perm)
msg='Granted perm: %s for user: %s in repo: %s' % (
@@ -281,48 +281,49 @@ class RepoModel(BaseModel):
form_data['repo_group'],
form_data['clone_uri'])
# now automatically start following this repository as owner
ScmModel(self.sa).toggle_following_repo(new_repo.repo_id,
cur_user.user_id)
log_create_repository(new_repo.get_dict(),
created_by=cur_user.username)
return new_repo
except:
raise
def create_fork(self, form_data, cur_user):
Simple wrapper into executing celery task for fork creation
:param form_data:
:param cur_user:
from rhodecode.lib.celerylib import tasks, run_task
run_task(tasks.create_repo_fork, form_data, cur_user)
def delete(self, repo):
repo = self.__get_repo(repo)
self.sa.delete(repo)
self.__delete_repo(repo)
def grant_user_permission(self, repo, user, perm):
:param repo: Instance of Repository, repository_id, or repository name
:param user: Instance of User, user_id or username
:param perm: Instance of Permission, or permission_name
user = self.__get_user(user)
permission = self.__get_perm(perm)
# check if we have that permission already
obj = self.sa.query(UserRepoToPerm)\
.filter(UserRepoToPerm.user == user)\
.filter(UserRepoToPerm.repository == repo)\
Status change: