Mercurial > public > src > rhodecode
changeset 2091:7dfcdf4c7dd2 beta
implements #361 API method for deleting repositories
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 19 Feb 2012 20:12:01 +0200 |
parents | bdc0ad168006 |
children | f2b7bebc6790 |
files | docs/api/api.rst rhodecode/controllers/api/api.py rhodecode/model/repo.py |
diffstat | 3 files changed, 43 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/docs/api/api.rst Sun Feb 19 20:00:18 2012 +0200 +++ b/docs/api/api.rst Sun Feb 19 20:12:01 2012 +0200 @@ -503,6 +503,29 @@ error: null +delete_repo +----------- + +Deletes a repository. This command can be executed only using api_key +belonging to user with admin rights. + + +INPUT:: + + api_key : "<api_key>" + method : "delete_repo" + args: { + "repo_name" : "<reponame>", + } + +OUTPUT:: + + result: { + "msg": "Deleted repository <reponame>", + } + error: null + + grant_user_permission ---------------------
--- a/rhodecode/controllers/api/api.py Sun Feb 19 20:00:18 2012 +0200 +++ b/rhodecode/controllers/api/api.py Sun Feb 19 20:12:01 2012 +0200 @@ -493,6 +493,25 @@ 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) + Session.commit() + return dict( + msg='Deleted repository %s' % repo_name + ) + except Exception: + log.error(traceback.format_exc()) + raise JSONRPCError('failed to delete repository %s' % repo_name) + + @HasPermissionAnyDecorator('hg.admin') def grant_user_permission(self, repo_name, username, perm): """ Grant permission for user on given repository, or update existing one
--- a/rhodecode/model/repo.py Sun Feb 19 20:00:18 2012 +0200 +++ b/rhodecode/model/repo.py Sun Feb 19 20:12:01 2012 +0200 @@ -302,6 +302,7 @@ run_task(tasks.create_repo_fork, form_data, cur_user) def delete(self, repo): + repo = self.__get_repo(repo) try: self.sa.delete(repo) self.__delete_repo(repo)