mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #7193 from jmchilton/export_extra_files
Simplify history import to fix extra files and ObjectStore interactions.
This commit is contained in:
@@ -101,16 +101,6 @@ class JobImportHistoryArchiveWrapper(UsesAnnotations):
|
||||
provenance_attrs = load(open(provenance_file_name))
|
||||
datasets_attrs += provenance_attrs
|
||||
|
||||
# Get counts of how often each dataset file is used; a file can
|
||||
# be linked to multiple dataset objects (HDAs).
|
||||
datasets_usage_counts = {}
|
||||
for dataset_attrs in datasets_attrs:
|
||||
temp_dataset_file_name = \
|
||||
os.path.realpath(os.path.join(archive_dir, dataset_attrs['file_name']))
|
||||
if (temp_dataset_file_name not in datasets_usage_counts):
|
||||
datasets_usage_counts[temp_dataset_file_name] = 0
|
||||
datasets_usage_counts[temp_dataset_file_name] += 1
|
||||
|
||||
# Create datasets.
|
||||
for dataset_attrs in datasets_attrs:
|
||||
metadata = dataset_attrs['metadata']
|
||||
@@ -150,26 +140,22 @@ class JobImportHistoryArchiveWrapper(UsesAnnotations):
|
||||
os.path.realpath(os.path.abspath(os.path.join(archive_dir, dataset_attrs['file_name'])))
|
||||
if not file_in_dir(temp_dataset_file_name, os.path.join(archive_dir, "datasets")):
|
||||
raise MalformedContents("Invalid dataset path: %s" % temp_dataset_file_name)
|
||||
if datasets_usage_counts[temp_dataset_file_name] == 1:
|
||||
self.app.object_store.update_from_file(hda.dataset, file_name=temp_dataset_file_name, create=True)
|
||||
self.app.object_store.update_from_file(hda.dataset, file_name=temp_dataset_file_name, create=True)
|
||||
|
||||
# Import additional files if present. Histories exported previously might not have this attribute set.
|
||||
dataset_extra_files_path = dataset_attrs.get('extra_files_path', None)
|
||||
if dataset_extra_files_path:
|
||||
try:
|
||||
file_list = os.listdir(os.path.join(archive_dir, dataset_extra_files_path))
|
||||
except OSError:
|
||||
file_list = []
|
||||
# Import additional files if present. Histories exported previously might not have this attribute set.
|
||||
dataset_extra_files_path = dataset_attrs.get('extra_files_path', None)
|
||||
if dataset_extra_files_path:
|
||||
try:
|
||||
file_list = os.listdir(os.path.join(archive_dir, dataset_extra_files_path))
|
||||
except OSError:
|
||||
file_list = []
|
||||
|
||||
if file_list:
|
||||
for extra_file in file_list:
|
||||
self.app.object_store.update_from_file(
|
||||
hda.dataset, extra_dir='dataset_%s_files' % hda.dataset.id,
|
||||
alt_name=extra_file, file_name=os.path.join(archive_dir, dataset_extra_files_path, extra_file),
|
||||
create=True)
|
||||
else:
|
||||
datasets_usage_counts[temp_dataset_file_name] -= 1
|
||||
shutil.copyfile(temp_dataset_file_name, hda.file_name)
|
||||
if file_list:
|
||||
for extra_file in file_list:
|
||||
self.app.object_store.update_from_file(
|
||||
hda.dataset, extra_dir='dataset_%s_files' % hda.dataset.id,
|
||||
alt_name=extra_file, file_name=os.path.join(archive_dir, dataset_extra_files_path, extra_file),
|
||||
create=True)
|
||||
hda.dataset.set_total_size() # update the filesize record in the database
|
||||
|
||||
# Set tags, annotations.
|
||||
|
||||
Reference in New Issue
Block a user