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')