From b15a7ff06df23d7004f670f34638fe9ee5d33f92 Mon Sep 17 00:00:00 2001 From: Dave Bouvier Date: Tue, 1 Mar 2016 14:37:56 -0500 Subject: [PATCH] Include repository metadata when browsing repositories in a category. --- lib/galaxy/webapps/tool_shed/api/categories.py | 3 ++- lib/tool_shed/util/shed_util_common.py | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/webapps/tool_shed/api/categories.py b/lib/galaxy/webapps/tool_shed/api/categories.py index 4158b896099..1fc1b0f2fe1 100644 --- a/lib/galaxy/webapps/tool_shed/api/categories.py +++ b/lib/galaxy/webapps/tool_shed/api/categories.py @@ -81,7 +81,8 @@ class CategoriesController( BaseAPIController ): category_dict[ 'url' ] = web.url_for( controller='categories', action='show', id=trans.security.encode_id( category.id ) ) - category_dict[ 'repositories' ] = suc.get_repositories_by_category( self.app, category.id ) + repositories = suc.get_repositories_by_category( self.app, category.id ) + category_dict[ 'repositories' ] = repositories return category_dict @expose_api_anonymous_and_sessionless diff --git a/lib/tool_shed/util/shed_util_common.py b/lib/tool_shed/util/shed_util_common.py index 7b45873f2b1..95f6d18f0e7 100644 --- a/lib/tool_shed/util/shed_util_common.py +++ b/lib/tool_shed/util/shed_util_common.py @@ -497,7 +497,17 @@ def get_repo_info_tuple_contents( repo_info_tuple ): def get_repositories_by_category( app, category_id ): sa_session = app.model.context.current resultset = sa_session.query( app.model.Category ).get( category_id ) - return [ repo.repository.to_dict( value_mapper={ 'id': app.security.encode_id, 'user_id': app.security.encode_id } ) for repo in resultset.repositories ] + repositories = [] + default_value_mapper = { 'id': app.security.encode_id, 'user_id': app.security.encode_id } + for row in resultset.repositories: + repository_dict = row.repository.to_dict( value_mapper=default_value_mapper ) + repository_dict[ 'metadata' ] = {} + for changeset, changehash in row.repository.installable_revisions( app ): + encoded_id = app.security.encode_id( row.repository.id ) + metadata = get_repository_metadata_by_changeset_revision( app, encoded_id, changehash ) + repository_dict[ 'metadata' ][ '%s:%s' % ( changeset, changehash ) ] = metadata.to_dict( value_mapper=default_value_mapper ) + repositories.append( repository_dict ) + return repositories def get_repository_and_repository_dependencies_from_repo_info_dict( app, repo_info_dict ):