Test deleting input datasets and recovering jobs from search

This revealed a wrong query filter (comparing
JobToInputDatasetAssociation.dataset_id == HistoryDatasetAssociation.id,
instead of JobToInputDatasetAssociation.dataset_id ==
HistoryDatasetAssociation.dataset_id).
This commit is contained in:
mvdbeek
2017-09-22 08:33:15 +02:00
parent 04754c4c4d
commit 64cf60b502
2 changed files with 14 additions and 8 deletions
+6 -7
View File
@@ -290,6 +290,11 @@ class JobController(BaseAPIController, UsesLibraryMixinItems):
decoded_id = self.decode_id(v['id'])
if 'src' not in v or v['src'] == 'hda':
datasets = [self.hda_manager.get_accessible(decoded_id, trans.user)]
all_history_associations = []
for dataset in datasets:
instances = trans.sa_session.query(trans.app.model.HistoryDatasetAssociation).filter(trans.app.model.HistoryDatasetAssociation.dataset_id == dataset.dataset_id).all()
all_history_associations.extend(instances)
decoded_ids = set(h.id for h in all_history_associations)
else:
if v['src'] == 'hdca':
hdca = self.dataset_collection_manager.get_dataset_collection_instance(trans=trans,
@@ -307,12 +312,6 @@ class JobController(BaseAPIController, UsesLibraryMixinItems):
datasets = [self.get_library_dataset_dataset_association(trans, v['id'])]
if datasets is None:
raise exceptions.ObjectNotFound("Dataset %s not found" % (v['id']))
if v['src'] != 'hdca':
all_history_associations = []
for dataset in datasets:
instances = trans.sa_session.query(trans.app.model.HistoryDatasetAssociation).filter(trans.app.model.HistoryDatasetAssociation.dataset_id == dataset.dataset_id).all()
all_history_associations.extend(instances)
decoded_ids = [h.id for h in all_history_associations]
parameter_values = []
for decoded_id in decoded_ids:
parameter_value = v.copy()
@@ -380,7 +379,7 @@ class JobController(BaseAPIController, UsesLibraryMixinItems):
b = aliased(trans.app.model.HistoryDatasetAssociation)
query = query.filter(and_(
trans.app.model.Job.id == a.job_id,
a.dataset_id == b.id,
a.dataset_id == b.dataset_id,
b.deleted == false(),
b.dataset_id.in_(datasets),
))
+8 -1
View File
@@ -291,7 +291,14 @@ class JobsApiTestCase(api.ApiTestCase):
search_payload = self._search_payload(history_id=history_id, tool_id='cat1', inputs=copied_inputs)
search_count = self._search(search_payload)
self.assertEquals(search_count, 1)
delete_respone = self._delete("histories/%s/contents/%s" % (history_id, dataset_id))
self._assert_status_code_is(delete_respone, 200)
search_count = self._search(search_payload)
self.assertEquals(search_count, 1)
delete_respone = self._delete("histories/%s/contents/%s" % (history_id, new_dataset_id))
self._assert_status_code_is(delete_respone, 200)
search_count = self._search(search_payload)
self.assertEquals(search_count, 0)
def test_search_with_hdca_list_input(self):
history_id, list_id_a = self.__history_with_ok_collection(collection_type='list')