aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Kuzminski <marcin@python-works.com>2012-12-17 22:46:50 +0100
committerMarcin Kuzminski <marcin@python-works.com>2012-12-17 22:46:50 +0100
commite087438159826cb9a48a5f35f8ef93d7de833042 (patch)
tree83903b55c71eb8aa7fe4e7939054faab2dcc5ca3
parent0ce49e770de3e41f568337f522778561079e8ed8 (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.rst86
-rw-r--r--rhodecode/controllers/api/api.py25
-rw-r--r--rhodecode/lib/utils.py14
-rwxr-xr-xrhodecode/model/db.py5
-rw-r--r--rhodecode/model/repo.py4
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')