# HG changeset patch # User Marcin Kuzminski # Date 1355780810 -3600 # Node ID ebd76deee70db0e447a88bc164ef7297601c3b15 # Parent 82a6d17d05bb680c8b0bd4ffeac98681ec11c0f0 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 diff -r 82a6d17d05bb -r ebd76deee70d docs/api/api.rst --- 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 : result: None if repository does not exist or { - "repo_id" : "", - "repo_name" : "" - "repo_type" : "", - "clone_uri" : "", - "private": : "", - "created_on" : "", - "description" : "", - "landing_rev": "", - "owner": "", - "fork_of": "", + "repo_id" : "", + "repo_name" : "" + "repo_type" : "", + "clone_uri" : "", + "enable_downloads": "", + "enable_locking": "", + "enable_statistics": "", + "private": "", + "created_on" : "", + "description" : "", + "landing_rev": "", + "owner": "", + "fork_of": "", "members" : [ { "type": "user", @@ -613,16 +616,19 @@ id : result: [ { - "repo_id" : "", - "repo_name" : "" - "repo_type" : "", - "clone_uri" : "", - "private": : "", - "created_on" : "", - "description" : "", - "landing_rev": "", - "owner": "", - "fork_of": "", + "repo_id" : "", + "repo_name" : "" + "repo_type" : "", + "clone_uri" : "", + "private": : "", + "created_on" : "", + "description" : "", + "landing_rev": "", + "owner": "", + "fork_of": "", + "enable_downloads": "", + "enable_locking": "", + "enable_statistics": "", }, … ] @@ -679,13 +685,16 @@ api_key : "" method : "create_repo" args: { - "repo_name" : "", - "owner" : "", - "repo_type" : "", - "description" : " = Optional('')", - "private" : " = Optional(False)", - "clone_uri" : " = Optional(None)", - "landing_rev" : " = Optional('tip')", + "repo_name" : "", + "owner" : "", + "repo_type" : " = Optional('hg')", + "description" : " = Optional('')", + "private" : " = Optional(False)", + "clone_uri" : " = Optional(None)", + "landing_rev" : " = Optional('tip')", + "enable_downloads": " = Optional(False)", + "enable_locking": " = Optional(False)", + "enable_statistics": " = Optional(False)", } OUTPUT:: @@ -694,16 +703,19 @@ result: { "msg": "Created new repository ``", "repo": { - "repo_id" : "", - "repo_name" : "" - "repo_type" : "", - "clone_uri" : "", - "private": : "", - "created_on" : "", - "description" : "", - "landing_rev": "", - "owner": "", - "fork_of": "", + "repo_id" : "", + "repo_name" : "" + "repo_type" : "", + "clone_uri" : "", + "private": : "", + "created_on" : "", + "description" : "", + "landing_rev": "", + "owner": "", + "fork_of": "", + "enable_downloads": "", + "enable_locking": "", + "enable_statistics": "", }, } error: null diff -r 82a6d17d05bb -r ebd76deee70d rhodecode/controllers/api/api.py --- 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() diff -r 82a6d17d05bb -r ebd76deee70d rhodecode/lib/utils.py --- 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 diff -r 82a6d17d05bb -r ebd76deee70d rhodecode/model/db.py --- 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 diff -r 82a6d17d05bb -r ebd76deee70d rhodecode/model/repo.py --- 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')