Mercurial > kallithea
changeset 3115:ebd76deee70d beta
Default parameters are now also used for creating repos using API calls, and initial repo scanner
- added new parameters to API call to override defaults
- docs update
- repo_type is now optional as it's a part of defaults
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 17 Dec 2012 22:46:50 +0100 |
parents | 82a6d17d05bb |
children | bd8ef7119688 |
files | docs/api/api.rst rhodecode/controllers/api/api.py rhodecode/lib/utils.py rhodecode/model/db.py rhodecode/model/repo.py |
diffstat | 5 files changed, 89 insertions(+), 45 deletions(-) [+] |
line wrap: on
line diff
--- a/docs/api/api.rst Sat Dec 15 17:20:25 2012 +0100 +++ b/docs/api/api.rst Mon Dec 17 22:46:50 2012 +0100 @@ -555,16 +555,19 @@ id : <id_given_in_input> result: None if repository does not exist or { - "repo_id" : "<repo_id>", - "repo_name" : "<reponame>" - "repo_type" : "<repo_type>", - "clone_uri" : "<clone_uri>", - "private": : "<bool>", - "created_on" : "<datetimecreated>", - "description" : "<description>", - "landing_rev": "<landing_rev>", - "owner": "<repo_owner>", - "fork_of": "<name_of_fork_parent>", + "repo_id" : "<repo_id>", + "repo_name" : "<reponame>" + "repo_type" : "<repo_type>", + "clone_uri" : "<clone_uri>", + "enable_downloads": "<bool>", + "enable_locking": "<bool>", + "enable_statistics": "<bool>", + "private": "<bool>", + "created_on" : "<datetimecreated>", + "description" : "<description>", + "landing_rev": "<landing_rev>", + "owner": "<repo_owner>", + "fork_of": "<name_of_fork_parent>", "members" : [ { "type": "user", @@ -613,16 +616,19 @@ id : <id_given_in_input> result: [ { - "repo_id" : "<repo_id>", - "repo_name" : "<reponame>" - "repo_type" : "<repo_type>", - "clone_uri" : "<clone_uri>", - "private": : "<bool>", - "created_on" : "<datetimecreated>", - "description" : "<description>", - "landing_rev": "<landing_rev>", - "owner": "<repo_owner>", - "fork_of": "<name_of_fork_parent>", + "repo_id" : "<repo_id>", + "repo_name" : "<reponame>" + "repo_type" : "<repo_type>", + "clone_uri" : "<clone_uri>", + "private": : "<bool>", + "created_on" : "<datetimecreated>", + "description" : "<description>", + "landing_rev": "<landing_rev>", + "owner": "<repo_owner>", + "fork_of": "<name_of_fork_parent>", + "enable_downloads": "<bool>", + "enable_locking": "<bool>", + "enable_statistics": "<bool>", }, … ] @@ -679,13 +685,16 @@ api_key : "<api_key>" method : "create_repo" args: { - "repo_name" : "<reponame>", - "owner" : "<onwer_name_or_id>", - "repo_type" : "<repo_type>", - "description" : "<description> = Optional('')", - "private" : "<bool> = Optional(False)", - "clone_uri" : "<clone_uri> = Optional(None)", - "landing_rev" : "<landing_rev> = Optional('tip')", + "repo_name" : "<reponame>", + "owner" : "<onwer_name_or_id>", + "repo_type" : "<repo_type> = Optional('hg')", + "description" : "<description> = Optional('')", + "private" : "<bool> = Optional(False)", + "clone_uri" : "<clone_uri> = Optional(None)", + "landing_rev" : "<landing_rev> = Optional('tip')", + "enable_downloads": "<bool> = Optional(False)", + "enable_locking": "<bool> = Optional(False)", + "enable_statistics": "<bool> = Optional(False)", } OUTPUT:: @@ -694,16 +703,19 @@ result: { "msg": "Created new repository `<reponame>`", "repo": { - "repo_id" : "<repo_id>", - "repo_name" : "<reponame>" - "repo_type" : "<repo_type>", - "clone_uri" : "<clone_uri>", - "private": : "<bool>", - "created_on" : "<datetimecreated>", - "description" : "<description>", - "landing_rev": "<landing_rev>", - "owner": "<repo_owner>", - "fork_of": "<name_of_fork_parent>", + "repo_id" : "<repo_id>", + "repo_name" : "<reponame>" + "repo_type" : "<repo_type>", + "clone_uri" : "<clone_uri>", + "private": : "<bool>", + "created_on" : "<datetimecreated>", + "description" : "<description>", + "landing_rev": "<landing_rev>", + "owner": "<repo_owner>", + "fork_of": "<name_of_fork_parent>", + "enable_downloads": "<bool>", + "enable_locking": "<bool>", + "enable_statistics": "<bool>", }, } error: null
--- a/rhodecode/controllers/api/api.py Sat Dec 15 17:20:25 2012 +0100 +++ b/rhodecode/controllers/api/api.py Mon Dec 17 22:46:50 2012 +0100 @@ -38,7 +38,7 @@ from rhodecode.model.user import UserModel from rhodecode.model.users_group import UsersGroupModel from rhodecode.model.permission import PermissionModel -from rhodecode.model.db import Repository +from rhodecode.model.db import Repository, RhodeCodeSetting log = logging.getLogger(__name__) @@ -556,9 +556,12 @@ ) @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository') - def create_repo(self, apiuser, repo_name, owner, repo_type, + def create_repo(self, apiuser, repo_name, owner, repo_type=Optional('hg'), description=Optional(''), private=Optional(False), - clone_uri=Optional(None), landing_rev=Optional('tip')): + clone_uri=Optional(None), landing_rev=Optional('tip'), + enable_statistics=Optional(False), + enable_locking=Optional(False), + enable_downloads=Optional(False)): """ Create repository, if clone_url is given it makes a remote clone if repo_name is withina group name the groups will be created @@ -578,7 +581,18 @@ if RepoModel().get_by_repo_name(repo_name): raise JSONRPCError("repo `%s` already exist" % repo_name) - private = Optional.extract(private) + defs = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True) + if isinstance(private, Optional): + private = defs.get('repo_private') or Optional.extract(private) + if isinstance(repo_type, Optional): + repo_type = defs.get('repo_type') + if isinstance(enable_statistics, Optional): + enable_statistics = defs.get('repo_enable_statistics') + if isinstance(enable_locking, Optional): + enable_locking = defs.get('repo_enable_locking') + if isinstance(enable_downloads, Optional): + enable_downloads = defs.get('repo_enable_downloads') + clone_uri = Optional.extract(clone_uri) description = Optional.extract(description) landing_rev = Optional.extract(landing_rev) @@ -596,6 +610,9 @@ clone_uri=clone_uri, repos_group=group, landing_rev=landing_rev, + enable_statistics=enable_statistics, + enable_downloads=enable_downloads, + enable_locking=enable_locking ) Session().commit()
--- a/rhodecode/lib/utils.py Sat Dec 15 17:20:25 2012 +0100 +++ b/rhodecode/lib/utils.py Mon Dec 17 22:46:50 2012 +0100 @@ -423,6 +423,13 @@ # CacheInvalidation.clear_cache() # sa.commit() + ##creation defaults + defs = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True) + enable_statistics = defs.get('repo_enable_statistics') + enable_locking = defs.get('repo_enable_locking') + enable_downloads = defs.get('repo_enable_downloads') + private = defs.get('repo_private') + for name, repo in initial_repo_list.items(): group = map_groups(name) db_repo = rm.get_by_repo_name(name) @@ -433,13 +440,18 @@ desc = (repo.description if repo.description != 'unknown' else '%s repository' % name) + new_repo = rm.create_repo( repo_name=name, repo_type=repo.alias, description=desc, repos_group=getattr(group, 'group_id', None), owner=user, - just_db=True + just_db=True, + enable_locking=enable_locking, + enable_downloads=enable_downloads, + enable_statistics=enable_statistics, + private=private ) # we added that repo just now, and make sure it has githook # installed
--- a/rhodecode/model/db.py Sat Dec 15 17:20:25 2012 +0100 +++ b/rhodecode/model/db.py Mon Dec 17 22:46:50 2012 +0100 @@ -841,7 +841,10 @@ description=repo.description, landing_rev=repo.landing_rev, owner=repo.user.username, - fork_of=repo.fork.repo_name if repo.fork else None + fork_of=repo.fork.repo_name if repo.fork else None, + enable_statistics=repo.enable_statistics, + enable_locking=repo.enable_locking, + enable_downloads=repo.enable_downloads ) return data
--- a/rhodecode/model/repo.py Sat Dec 15 17:20:25 2012 +0100 +++ b/rhodecode/model/repo.py Mon Dec 17 22:46:50 2012 +0100 @@ -339,9 +339,9 @@ copy_fork_permissions = form_data.get('copy_permissions') fork_of = form_data.get('fork_parent_id') - ##defaults + ## repo creation defaults, private and repo_type are filled in form defs = RhodeCodeSetting.get_default_repo_settings(strip_prefix=True) - enable_statistics = defs.get('repo_enable_statistic') + enable_statistics = defs.get('repo_enable_statistics') enable_locking = defs.get('repo_enable_locking') enable_downloads = defs.get('repo_enable_downloads')