diff options
author | Marcin Kuzminski <marcin@python-works.com> | 2012-12-17 22:46:50 +0100 |
---|---|---|
committer | Marcin Kuzminski <marcin@python-works.com> | 2012-12-17 22:46:50 +0100 |
commit | e087438159826cb9a48a5f35f8ef93d7de833042 (patch) | |
tree | 83903b55c71eb8aa7fe4e7939054faab2dcc5ca3 | |
parent | 0ce49e770de3e41f568337f522778561079e8ed8 (diff) |
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
--HG--
branch : beta
-rw-r--r-- | docs/api/api.rst | 86 | ||||
-rw-r--r-- | rhodecode/controllers/api/api.py | 25 | ||||
-rw-r--r-- | rhodecode/lib/utils.py | 14 | ||||
-rwxr-xr-x | rhodecode/model/db.py | 5 | ||||
-rw-r--r-- | rhodecode/model/repo.py | 4 |
5 files changed, 89 insertions, 45 deletions
diff --git a/docs/api/api.rst b/docs/api/api.rst index 82bfa22d..335dd942 100644 --- a/docs/api/api.rst +++ b/docs/api/api.rst @@ -555,16 +555,19 @@ OUTPUT:: 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 @@ OUTPUT:: 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 @@ INPUT:: 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 @@ OUTPUT:: 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 diff --git a/rhodecode/controllers/api/api.py b/rhodecode/controllers/api/api.py index 93bec581..8a0b2dfe 100644 --- a/rhodecode/controllers/api/api.py +++ b/rhodecode/controllers/api/api.py @@ -38,7 +38,7 @@ from rhodecode.model.repo import RepoModel 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 @@ class ApiController(JSONRPCController): ) @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 @@ class ApiController(JSONRPCController): 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 @@ class ApiController(JSONRPCController): 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 --git a/rhodecode/lib/utils.py b/rhodecode/lib/utils.py index 805d2683..c240f630 100644 --- a/rhodecode/lib/utils.py +++ b/rhodecode/lib/utils.py @@ -423,6 +423,13 @@ def repo2db_mapper(initial_repo_list, remove_obsolete=False, # 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 @@ def repo2db_mapper(initial_repo_list, remove_obsolete=False, 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 --git a/rhodecode/model/db.py b/rhodecode/model/db.py index 85ca1fbf..1d5ab5ba 100755 --- a/rhodecode/model/db.py +++ b/rhodecode/model/db.py @@ -841,7 +841,10 @@ class Repository(Base, BaseModel): 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 --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py index 79536c7e..189ddb64 100644 --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -339,9 +339,9 @@ class RepoModel(BaseModel): 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') |