From 3e62378b2a30552da4725d76aac044ba99e2868d Mon Sep 17 00:00:00 2001 From: Martin Cech Date: Thu, 20 Mar 2014 19:26:45 -0400 Subject: [PATCH] libraries - removal of id-encoding related bug in API commited in f7ebd14c2f9b260cdb6627e4abfd5c03f14c4900 and identified by jmchilton in https://bitbucket.org/galaxy/galaxy-central/commits/f7ebd14c2f9b260cdb6627e4abfd5c03f14c4900#comment-825140 --- lib/galaxy/model/__init__.py | 4 ++-- lib/galaxy/webapps/galaxy/api/library_contents.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/galaxy/model/__init__.py b/lib/galaxy/model/__init__.py index 399d5ce2788..7276a2928ca 100644 --- a/lib/galaxy/model/__init__.py +++ b/lib/galaxy/model/__init__.py @@ -2078,8 +2078,8 @@ class LibraryFolder( object, Dictifiable, HasName ): # This needs to be a list return [ ld for ld in self.datasets if ld.library_dataset_dataset_association and not ld.library_dataset_dataset_association.dataset.deleted ] - def to_dict( self, view='collection' ): - rval = super( LibraryFolder, self ).to_dict( view=view ) + def to_dict( self, view='collection', value_mapper=None ): + rval = super( LibraryFolder, self ).to_dict( view=view, value_mapper=value_mapper ) info_association, inherited = self.get_info_association() if info_association: if inherited: diff --git a/lib/galaxy/webapps/galaxy/api/library_contents.py b/lib/galaxy/webapps/galaxy/api/library_contents.py index d8be4ae6f16..192d9970853 100644 --- a/lib/galaxy/webapps/galaxy/api/library_contents.py +++ b/lib/galaxy/webapps/galaxy/api/library_contents.py @@ -123,11 +123,18 @@ class LibraryContentsController( BaseAPIController, UsesLibraryMixin, UsesLibrar class_name, content_id = self.__decode_library_content_id( trans, id ) if class_name == 'LibraryFolder': content = self.get_library_folder( trans, content_id, check_ownership=False, check_accessible=True ) + rval = content.to_dict( view='element', value_mapper={ 'id' : trans.security.encode_id } ) + rval[ 'id' ] = 'F' + str( rval[ 'id' ] ) + rval[ 'parent_id' ] = 'F' + str( trans.security.encode_id( rval[ 'parent_id' ] ) ) + rval[ 'parent_library_id' ] = trans.security.encode_id( rval[ 'parent_library_id' ] ) else: content = self.get_library_dataset( trans, content_id, check_ownership=False, check_accessible=True ) - - return content.to_dict( view='element', value_mapper={ 'id' : trans.security.encode_id } ) - # return self.encode_all_ids( trans, content.to_dict( view='element' ) ) + rval = content.to_dict( view='element') + rval[ 'id' ] = trans.security.encode_id( rval[ 'id' ] ) + rval[ 'ldda_id' ] = trans.security.encode_id( rval[ 'ldda_id' ] ) + rval[ 'folder_id' ] = 'F' + str( trans.security.encode_id( rval[ 'folder_id' ] ) ) + rval[ 'parent_library_id' ] = trans.security.encode_id( rval[ 'parent_library_id' ] ) + return rval @web.expose_api def create( self, trans, library_id, payload, **kwd ):