Loading lib/galaxy/managers/jobs.py +1 −1 Original line number Diff line number Diff line Loading @@ -281,7 +281,7 @@ class JobManager: def stop(self, job, message=None): if not job.finished: job.mark_deleted(self.app.config.track_jobs_in_database) job.mark_deleted(self.app.config.track_jobs_in_database, message) session = self.app.model.session with transaction(session): session.commit() Loading lib/galaxy/model/__init__.py +4 −3 Original line number Diff line number Diff line Loading @@ -1751,7 +1751,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): else: self.state = Job.states.STOPPED def mark_deleted(self, track_jobs_in_database=False): def mark_deleted(self, track_jobs_in_database=False, message=None): """ Mark this job as deleted, and mark any output datasets as discarded. """ Loading @@ -1762,7 +1762,8 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): self.state = Job.states.DELETING else: self.state = Job.states.DELETED self.info = "Job output deleted by user before job completed." info = message or "Job output deleted by user before job completed." self.info = info for jtoda in self.output_datasets: output_hda = jtoda.dataset output_hda.deleted = True Loading @@ -1772,7 +1773,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): shared_hda.deleted = True shared_hda.blurb = "deleted" shared_hda.peek = "Job deleted" shared_hda.info = "Job output deleted by user before job completed" shared_hda.info = info def mark_failed(self, info="Job execution failed", blurb=None, peek=None): """ Loading lib/galaxy_test/api/test_jobs.py +18 −0 Original line number Diff line number Diff line Loading @@ -1019,6 +1019,24 @@ steps: self._assert_status_code_is(empty_search_response, 200) assert len(empty_search_response.json()) == 0 @pytest.mark.require_new_history def test_delete_job_with_message(self, history_id): input_dataset_id = self.__history_with_ok_dataset(history_id) inputs = json.dumps({"input1": {"src": "hda", "id": input_dataset_id}}) search_payload = self._search_payload(history_id=history_id, tool_id="cat1", inputs=inputs) # create a job tool_response = self._post("tools", data=search_payload).json() job_id = tool_response["jobs"][0]["id"] output_dataset_id = tool_response["outputs"][0]["id"] # delete the job with message expected_message = "test message" delete_job_response = self._delete(f"jobs/{job_id}", data={"message": expected_message}, json=True) self._assert_status_code_is(delete_job_response, 200) # Check the output dataset is deleted and the info field contains the message dataset_details = self._get(f"histories/{history_id}/contents/{output_dataset_id}").json() assert dataset_details["deleted"] is True assert dataset_details["misc_info"] == expected_message @pytest.mark.require_new_history def test_destination_params(self, history_id): dataset_id = self.__history_with_ok_dataset(history_id) Loading Loading
lib/galaxy/managers/jobs.py +1 −1 Original line number Diff line number Diff line Loading @@ -281,7 +281,7 @@ class JobManager: def stop(self, job, message=None): if not job.finished: job.mark_deleted(self.app.config.track_jobs_in_database) job.mark_deleted(self.app.config.track_jobs_in_database, message) session = self.app.model.session with transaction(session): session.commit() Loading
lib/galaxy/model/__init__.py +4 −3 Original line number Diff line number Diff line Loading @@ -1751,7 +1751,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): else: self.state = Job.states.STOPPED def mark_deleted(self, track_jobs_in_database=False): def mark_deleted(self, track_jobs_in_database=False, message=None): """ Mark this job as deleted, and mark any output datasets as discarded. """ Loading @@ -1762,7 +1762,8 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): self.state = Job.states.DELETING else: self.state = Job.states.DELETED self.info = "Job output deleted by user before job completed." info = message or "Job output deleted by user before job completed." self.info = info for jtoda in self.output_datasets: output_hda = jtoda.dataset output_hda.deleted = True Loading @@ -1772,7 +1773,7 @@ class Job(Base, JobLike, UsesCreateAndUpdateTime, Dictifiable, Serializable): shared_hda.deleted = True shared_hda.blurb = "deleted" shared_hda.peek = "Job deleted" shared_hda.info = "Job output deleted by user before job completed" shared_hda.info = info def mark_failed(self, info="Job execution failed", blurb=None, peek=None): """ Loading
lib/galaxy_test/api/test_jobs.py +18 −0 Original line number Diff line number Diff line Loading @@ -1019,6 +1019,24 @@ steps: self._assert_status_code_is(empty_search_response, 200) assert len(empty_search_response.json()) == 0 @pytest.mark.require_new_history def test_delete_job_with_message(self, history_id): input_dataset_id = self.__history_with_ok_dataset(history_id) inputs = json.dumps({"input1": {"src": "hda", "id": input_dataset_id}}) search_payload = self._search_payload(history_id=history_id, tool_id="cat1", inputs=inputs) # create a job tool_response = self._post("tools", data=search_payload).json() job_id = tool_response["jobs"][0]["id"] output_dataset_id = tool_response["outputs"][0]["id"] # delete the job with message expected_message = "test message" delete_job_response = self._delete(f"jobs/{job_id}", data={"message": expected_message}, json=True) self._assert_status_code_is(delete_job_response, 200) # Check the output dataset is deleted and the info field contains the message dataset_details = self._get(f"histories/{history_id}/contents/{output_dataset_id}").json() assert dataset_details["deleted"] is True assert dataset_details["misc_info"] == expected_message @pytest.mark.require_new_history def test_destination_params(self, history_id): dataset_id = self.__history_with_ok_dataset(history_id) Loading