From fcdf391232923e38640cdcb5e6a7c9437b8149da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isak=20Ohlsson=20=C3=85ngnell?= <40887124+islean@users.noreply.github.com> Date: Thu, 30 May 2024 15:19:34 +0200 Subject: [PATCH] Add to comment instead of exchanging (#449) (patch) ### Fixed - Cancelled analyses do not get their comments overridden. --- tests/store/crud/test_read.py | 4 ++-- tests/store/crud/test_update.py | 6 +++--- trailblazer/server/api.py | 2 +- trailblazer/store/crud/update.py | 9 +++++++-- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/tests/store/crud/test_read.py b/tests/store/crud/test_read.py index 19ec757b..da8ed75a 100644 --- a/tests/store/crud/test_read.py +++ b/tests/store/crud/test_read.py @@ -14,7 +14,7 @@ def test_get_analyses_by_status_started_at_and_comment( existing_analysis: Analysis = analysis_store.get_query(table=Analysis).first() # GIVEN a comment - analysis_store.update_analysis_comment( + analysis_store.update_latest_analysis_comment( case_id=existing_analysis.case_id, comment="a new comment" ) @@ -35,7 +35,7 @@ def test_get_analyses_by_status_started_at_and_comment_with_comment(analysis_sto existing_analysis: Analysis = analysis_store.get_query(table=Analysis).first() # GIVEN a comment - analysis_store.update_analysis_comment( + analysis_store.update_latest_analysis_comment( case_id=existing_analysis.case_id, comment="a new comment" ) diff --git a/tests/store/crud/test_update.py b/tests/store/crud/test_update.py index 8e0e4f46..49e1de23 100644 --- a/tests/store/crud/test_update.py +++ b/tests/store/crud/test_update.py @@ -335,7 +335,7 @@ def test_update_analysis_comment(analysis_store: MockStore, case_id: str): comment: str = "test comment" # WHEN adding a comment - analysis_store.update_analysis_comment(case_id=analysis.case_id, comment=comment) + analysis_store.update_latest_analysis_comment(case_id=analysis.case_id, comment=comment) # THEN a comment should have been added assert analysis.comment == comment @@ -350,8 +350,8 @@ def test_update_analysis_comment_when_existing(analysis_store: MockStore, case_i second_comment: str = "Second" # WHEN adding a comment - analysis_store.update_analysis_comment(case_id=analysis.case_id, comment=first_comment) - analysis_store.update_analysis_comment(case_id=analysis.case_id, comment=second_comment) + analysis_store.update_latest_analysis_comment(case_id=analysis.case_id, comment=first_comment) + analysis_store.update_latest_analysis_comment(case_id=analysis.case_id, comment=second_comment) # THEN comments should have been added assert analysis.comment == f"{first_comment} {second_comment}" diff --git a/trailblazer/server/api.py b/trailblazer/server/api.py index bbfbcb43..636a3bbb 100644 --- a/trailblazer/server/api.py +++ b/trailblazer/server/api.py @@ -255,7 +255,7 @@ def add_comment(): try: case_id: str = put_request.get("case_id") comment: str = put_request.get("comment") - store.update_analysis_comment(case_id=case_id, comment=comment) + store.update_latest_analysis_comment(case_id=case_id, comment=comment) return jsonify("Success! Adding comment request sent"), HTTPStatus.CREATED except Exception as error: return jsonify(f"Exception: {error}"), HTTPStatus.CONFLICT diff --git a/trailblazer/store/crud/update.py b/trailblazer/store/crud/update.py index 8ca12c61..801f457e 100644 --- a/trailblazer/store/crud/update.py +++ b/trailblazer/store/crud/update.py @@ -179,10 +179,11 @@ def cancel_ongoing_analysis( LOG.info(f"Case {analysis.case_id} - Analysis {analysis.id}: cancelled successfully!") self.update_run_status(analysis_id=analysis_id, analysis_host=analysis_host) analysis.status = TrailblazerStatus.CANCELLED - analysis.comment = ( + new_comment: str = ( f"Analysis cancelled manually by user:" f" {(self.get_user(email=email).name if self.get_user(email=email) else (email or 'Unknown'))}!" ) + self.update_analysis_comment(analysis=analysis, comment=new_comment) session: Session = get_session() session.commit() @@ -226,8 +227,12 @@ def update_analysis_uploaded_at(self, case_id: str, uploaded_at: datetime) -> No session: Session = get_session() session.commit() - def update_analysis_comment(self, case_id: str, comment: str) -> None: + def update_latest_analysis_comment(self, case_id: str, comment: str) -> None: analysis: Analysis | None = self.get_latest_analysis_for_case(case_id) + self.update_analysis_comment(analysis=analysis, comment=comment) + + @staticmethod + def update_analysis_comment(analysis: Analysis, comment: str): analysis.comment: str = ( " ".join([analysis.comment, comment]) if analysis.comment else comment )