From 65b4f4d698867733ab8ede89000c8b8b47b7c5f8 Mon Sep 17 00:00:00 2001 From: Dave Bouvier Date: Wed, 11 Dec 2013 12:43:36 -0500 Subject: [PATCH 1/3] When creating a repository, make sure there are no repositories with the same name, deleted or active. --- lib/galaxy/webapps/tool_shed/controllers/repository.py | 4 ++-- lib/tool_shed/util/repository_maintenance_util.py | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/webapps/tool_shed/controllers/repository.py b/lib/galaxy/webapps/tool_shed/controllers/repository.py index 5b33fc75015..3946a1f7f88 100644 --- a/lib/galaxy/webapps/tool_shed/controllers/repository.py +++ b/lib/galaxy/webapps/tool_shed/controllers/repository.py @@ -933,7 +933,7 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ): repository_type = kwd.get( 'repository_type', rt_util.UNRESTRICTED ) if kwd.get( 'create_repository_button', False ): error = False - message = repository_maintenance_util.validate_repository_name( name, trans.user ) + message = repository_maintenance_util.validate_repository_name( trans.app, name, trans.user ) if message: error = True if not description: @@ -2070,7 +2070,7 @@ class RepositoryController( BaseUIController, ratings_util.ItemRatings ): repository.long_description = long_description flush_needed = True if repository.times_downloaded == 0 and repo_name != repository.name: - message = repository_maintenance_util.validate_repository_name( repo_name, user ) + message = repository_maintenance_util.validate_repository_name( trans.app, repo_name, user ) if message: error = True else: diff --git a/lib/tool_shed/util/repository_maintenance_util.py b/lib/tool_shed/util/repository_maintenance_util.py index a78f8202fb1..e71b441352e 100644 --- a/lib/tool_shed/util/repository_maintenance_util.py +++ b/lib/tool_shed/util/repository_maintenance_util.py @@ -56,15 +56,18 @@ def create_hgrc_file( trans, repository ): fp.write( 'hgext.purge=' ) fp.close() -def validate_repository_name( name, user ): +def validate_repository_name( app, name, user ): # Repository names must be unique for each user, must be at least four characters # in length and must contain only lower-case letters, numbers, and the '_' character. if name in [ 'None', None, '' ]: return 'Enter the required repository name.' if name in [ 'repos' ]: return "The term %s is a reserved word in the tool shed, so it cannot be used as a repository name." % name - for repository in user.active_repositories: - if repository.name == name: + check_existing = suc.get_repository_by_name_and_owner( app, name, user.username ) + if check_existing is not None: + if check_existing.deleted: + return 'You have a deleted repository named %s, so choose a different name.' % name + else: return "You already have a repository named %s, so choose a different name." % name if len( name ) < 4: return "Repository names must be at least 4 characters in length." From 1e2688fc8781a74912e9ee4b7b736eb9ba3b418f Mon Sep 17 00:00:00 2001 From: Dave Bouvier Date: Fri, 13 Dec 2013 14:45:42 -0500 Subject: [PATCH 2/3] Fix API visibility for the repository_revisions index. --- lib/galaxy/webapps/tool_shed/api/repository_revisions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/webapps/tool_shed/api/repository_revisions.py b/lib/galaxy/webapps/tool_shed/api/repository_revisions.py index 26db4386b73..6f6a8f1ea13 100644 --- a/lib/galaxy/webapps/tool_shed/api/repository_revisions.py +++ b/lib/galaxy/webapps/tool_shed/api/repository_revisions.py @@ -66,7 +66,7 @@ class RepositoryRevisionsController( BaseAPIController ): trans.response.status = 500 return message - @web.expose_api + @web.expose_api_anonymous def index( self, trans, **kwd ): """ GET /api/repository_revisions From 607d2909f03c337172a95c751e8460aa06599f59 Mon Sep 17 00:00:00 2001 From: Dave Bouvier Date: Fri, 13 Dec 2013 15:49:28 -0500 Subject: [PATCH 3/3] Expose the show method anonymously. --- lib/galaxy/webapps/tool_shed/api/repository_revisions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/webapps/tool_shed/api/repository_revisions.py b/lib/galaxy/webapps/tool_shed/api/repository_revisions.py index 6f6a8f1ea13..6841f627edb 100644 --- a/lib/galaxy/webapps/tool_shed/api/repository_revisions.py +++ b/lib/galaxy/webapps/tool_shed/api/repository_revisions.py @@ -133,7 +133,7 @@ class RepositoryRevisionsController( BaseAPIController ): trans.response.status = 500 return message - @web.expose_api + @web.expose_api_anonymous def show( self, trans, id, **kwd ): """ GET /api/repository_revisions/{encoded_repository_metadata_id}