@@ -531,6 +531,17 @@ def handle_dataset_object_edit(dataset_instance, dataset_attrs):
531531
532532 model_class = dataset_attrs .get ("model_class" , "HistoryDatasetAssociation" )
533533 if model_class == "HistoryDatasetAssociation" :
534+ # Check if this HDA should reuse a dataset from a copied-from HDA
535+ reuse_dataset = None
536+ copied_from_chain = dataset_attrs .get ("copied_from_history_dataset_association_id_chain" , [])
537+ if copied_from_chain :
538+ # Look for the source HDA in the current import set
539+ copied_from_key = _copied_from_object_key (copied_from_chain , object_import_tracker .hdas_by_key )
540+ if copied_from_key and copied_from_key in object_import_tracker .hdas_by_key :
541+ source_hda = object_import_tracker .hdas_by_key [copied_from_key ]
542+ # Reuse the dataset from the source HDA
543+ reuse_dataset = source_hda .dataset
544+
534545 # Create dataset and HDA.
535546 dataset_instance = model .HistoryDatasetAssociation (
536547 name = dataset_attrs ["name" ],
@@ -545,7 +556,8 @@ def handle_dataset_object_edit(dataset_instance, dataset_attrs):
545556 tool_version = metadata .get ("tool_version" ),
546557 metadata_deferred = metadata_deferred ,
547558 history = history ,
548- create_dataset = True ,
559+ create_dataset = reuse_dataset is None ,
560+ dataset = reuse_dataset ,
549561 flush = False ,
550562 sa_session = self .sa_session ,
551563 )
0 commit comments