diff --git a/crc/services/data_store_service.py b/crc/services/data_store_service.py index 249065fa..ba168bf2 100644 --- a/crc/services/data_store_service.py +++ b/crc/services/data_store_service.py @@ -146,9 +146,9 @@ class DataStoreBase(object): elif study_id: query = query.filter(DataStoreModel.study_id == study_id) record = query.first() - session.delete(record) - session.commit() - # return record + if record is not None: + session.delete(record) + session.commit() @staticmethod def delete_extra_data_stores(records): diff --git a/tests/test_data_store_service.py b/tests/test_data_store_service.py index 1cbdc814..4c4339ed 100644 --- a/tests/test_data_store_service.py +++ b/tests/test_data_store_service.py @@ -275,3 +275,16 @@ class TestDataStoreValidation(BaseTest): self.assertEqual(3, len(result)) for record in result: self.assertEqual('false', record.value) + + def test_do_not_fail_deleting_record_that_does_not_exist(self): + file_id = self.add_test_file() + + workflow = self.create_workflow('data_store_set') + workflow_api = self.get_workflow_api(workflow) + task = workflow_api.next_task + + # The workflow turns the string 'None' into the value None + form_data = {'key': 'my_key', 'value': 'None', 'file_id': file_id} + workflow_api = self.complete_form(workflow, task, form_data) + task = workflow_api.next_task + self.assertEqual('Event_EndEvent', task.name)