diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample index 64bb6dd7c20..561a2ab364d 100644 --- a/config/datatypes_conf.xml.sample +++ b/config/datatypes_conf.xml.sample @@ -620,6 +620,9 @@ + + + @@ -824,5 +827,6 @@ + diff --git a/lib/galaxy/datatypes/converters/neostorezip_to_neostore_converter.xml b/lib/galaxy/datatypes/converters/neostorezip_to_neostore_converter.xml new file mode 100644 index 00000000000..74486fe30d4 --- /dev/null +++ b/lib/galaxy/datatypes/converters/neostorezip_to_neostore_converter.xml @@ -0,0 +1,14 @@ + diff --git a/lib/galaxy/datatypes/neo4j.py b/lib/galaxy/datatypes/neo4j.py index 8c85a5e1c8d..059be6972e5 100644 --- a/lib/galaxy/datatypes/neo4j.py +++ b/lib/galaxy/datatypes/neo4j.py @@ -8,6 +8,7 @@ import sys from galaxy.datatypes.data import Data from galaxy.datatypes.images import Html +from galaxy.datatypes.metadata import MetadataElement from galaxy.util import FILENAME_VALID_CHARS gal_Log = logging.getLogger(__name__) @@ -26,6 +27,7 @@ class Neo4j(Html): This is called only at upload to write the html file cannot rename the datasets here - they come with the default unfortunately """ + # self.regenerate_primary_file(dataset) rval = [ 'Files for Composite Dataset (%s)

\ This composite dataset is composed of the following files:

    ' % ( @@ -34,7 +36,8 @@ class Neo4j(Html): opt_text = '' if composite_file.optional: opt_text = ' (optional)' - rval.append('
  • %s%s' % (composite_name, composite_name, opt_text)) + rval.append('
  • %s%s' % + (composite_name, composite_name, opt_text)) rval.append('
') return "\n".join(rval) @@ -68,22 +71,27 @@ class Neo4j(Html): trans.log_event("Display dataset id: %s" % str(data.id)) # the target directory name - neo4j_dir_name = '/dataset_{}_files/neo4jdb'.format(data.dataset.id) - dir_name = str(os.path.dirname(trans.app.object_store.get_filename(data.dataset))) + neo4j_dir_name + neo4j_dir_name = '/dataset_{}_files'.format( + data.dataset.id) + dir_name = str(os.path.dirname( + trans.app.object_store.get_filename(data.dataset))) + neo4j_dir_name # generate unique filename for this dataset - fname = ''.join(c in FILENAME_VALID_CHARS and c or '_' for c in data.name)[0:150] + fname = ''.join( + c in FILENAME_VALID_CHARS and c or '_' for c in data.name)[0:150] # zip the target directory (dir_name) using the fname shutil.make_archive(fname, 'zip', dir_name) download_zip = fname + '.zip' # setup headers for the download - trans.response.headers['Content-Length'] = int(os.stat(download_zip).st_size) + trans.response.headers['Content-Length'] = int( + os.stat(download_zip).st_size) # force octet-stream so Safari doesn't append mime extensions to filename trans.response.set_content_type("application/octet-stream") trans.response.headers["Content-Disposition"] = 'attachment; filename="Galaxy%s-[%s].%s"' % \ - (data.hid, download_zip, "zip") + (data.hid, + download_zip, "zip") return open(download_zip) @@ -97,39 +105,74 @@ class Neo4jDB(Neo4j, Data): Data.__init__(self, **kwd) self.add_composite_file('neostore', is_binary=True) self.add_composite_file('neostore.id', is_binary=True) - self.add_composite_file('neostore.counts.db.a', is_binary=True) - self.add_composite_file('neostore.counts.db.b', is_binary=True) + self.add_composite_file('neostore.counts.db.a', optional=True, is_binary=True) + self.add_composite_file('neostore.counts.db.b', optional=True, is_binary=True) self.add_composite_file('neostore.labeltokenstore.db', is_binary=True) - self.add_composite_file('neostore.labeltokenstore.db.id', is_binary=True) - self.add_composite_file('neostore.labeltokenstore.db.names', is_binary=True) - self.add_composite_file('neostore.labeltokenstore.db.names.id', is_binary=True) + self.add_composite_file( + 'neostore.labeltokenstore.db.id', is_binary=True) + self.add_composite_file( + 'neostore.labeltokenstore.db.names', is_binary=True) + self.add_composite_file( + 'neostore.labeltokenstore.db.names.id', is_binary=True) self.add_composite_file('neostore.nodestore.db', is_binary=True) self.add_composite_file('neostore.nodestore.db.id', is_binary=True) self.add_composite_file('neostore.nodestore.db.labels', is_binary=True) - self.add_composite_file('neostore.nodestore.db.labels.id', is_binary=True) + self.add_composite_file( + 'neostore.nodestore.db.labels.id', is_binary=True) self.add_composite_file('neostore.propertystore.db', is_binary=True) self.add_composite_file('neostore.propertystore.db.id', is_binary=True) - self.add_composite_file('neostore.propertystore.db.arrays', is_binary=True) - self.add_composite_file('neostore.propertystore.db.arrays.id', is_binary=True) - self.add_composite_file('neostore.propertystore.db.index', is_binary=True) - self.add_composite_file('neostore.propertystore.db.index.id', is_binary=True) - self.add_composite_file('neostore.propertystore.db.index.keys', is_binary=True) - self.add_composite_file('neostore.propertystore.db.index.keys.id', is_binary=True) - self.add_composite_file('neostore.propertystore.db.strings', is_binary=True) - self.add_composite_file('neostore.propertystore.db.strings.id', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.arrays', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.arrays.id', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.index', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.index.id', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.index.keys', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.index.keys.id', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.strings', is_binary=True) + self.add_composite_file( + 'neostore.propertystore.db.strings.id', is_binary=True) - self.add_composite_file('neostore.relationshipgroupstore.db', is_binary=True) - self.add_composite_file('neostore.relationshipgroupstore.db.id', is_binary=True) - self.add_composite_file('neostore.relationshipstore.db', is_binary=True) - self.add_composite_file('neostore.relationshipstore.db.id', is_binary=True) - self.add_composite_file('neostore.relationshiptypestore.db.names', is_binary=True) - self.add_composite_file('neostore.relationshiptypestore.db.names.id', is_binary=True) + self.add_composite_file( + 'neostore.relationshipgroupstore.db', is_binary=True) + self.add_composite_file( + 'neostore.relationshipgroupstore.db.id', is_binary=True) + self.add_composite_file( + 'neostore.relationshipstore.db', is_binary=True) + self.add_composite_file( + 'neostore.relationshipstore.db.id', is_binary=True) + self.add_composite_file( + 'neostore.relationshiptypestore.db.names', is_binary=True) + self.add_composite_file( + 'neostore.relationshiptypestore.db.names.id', is_binary=True) self.add_composite_file('neostore.schemastore.db', is_binary=True) self.add_composite_file('neostore.schemastore.db.id', is_binary=True) self.add_composite_file('neostore.transaction.db.0', is_binary=True) +class Neo4jDBzip(Neo4j, Data): + """Class for neo4jDB database files.""" + MetadataElement(name='reference_name', default='neostore_file', desc='Reference Name', + readonly=True, visible=True, set_in_upload=True, no_value='neostore') + MetadataElement(name="neostore_zip", default=None, desc="Neostore zip", + readonly=True, visible=True, set_in_upload=True, no_value=None, optional=True) + + file_ext = "neostore.zip" + composite_type = 'auto_primary_file' + allow_datatype_change = False + + def __init__(self, **kwd): + Data.__init__(self, **kwd) + self.add_composite_file('%s.zip', description='neostore zip', substitute_name_with_metadata='reference_name', + is_binary=True) + + if __name__ == '__main__': import doctest doctest.testmod(sys.modules[__name__]) diff --git a/test-data/neostore.zip b/test-data/neostore.zip index 1165399f4c0..1fa6b66eb21 100644 Binary files a/test-data/neostore.zip and b/test-data/neostore.zip differ diff --git a/test/functional/tools/compressed_neostorezip_neostore_conversion.xml b/test/functional/tools/compressed_neostorezip_neostore_conversion.xml new file mode 100644 index 00000000000..2f3652074d5 --- /dev/null +++ b/test/functional/tools/compressed_neostorezip_neostore_conversion.xml @@ -0,0 +1,19 @@ + + + cat '$input1' > '$out_file1' + + + + + + + + + + + + + + + + diff --git a/test/functional/tools/compressed_neostorezip_neostore_no_conversion.xml b/test/functional/tools/compressed_neostorezip_neostore_no_conversion.xml new file mode 100644 index 00000000000..9ccfa8504d1 --- /dev/null +++ b/test/functional/tools/compressed_neostorezip_neostore_no_conversion.xml @@ -0,0 +1,19 @@ + + + cat '$input1' > '$out_file1' + + + + + + + + + + + + + + + +