From c905331942ba4e9e70288db7d6dddf073d5cdbfe Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:33:46 +0100 Subject: [PATCH 01/12] Add functions to check if only existing samples and retrieve ticket status --- cg/meta/orders/utils.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index bb2e45cd0e..743f428898 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -26,3 +26,21 @@ def get_ticket_tags(order: Order, order_type: OrderType) -> list[str]: tags.append("existing-data") return tags + + +def contains_only_existing_samples(order: Order) -> bool: + """Check if the order contains only existing samples""" + + for enumerated_case in order.enumerated_cases: + case: Case = enumerated_case[1] + if case.enumerated_new_samples: + return False + return True + + +def get_ticket_status(order: Order) -> int: + """Get the ticket status based on the order""" + + if contains_only_existing_samples(order=order): + return 2 + return 3 From b5db7a7a02d174957653922d25b85c9f7ac3f808 Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:37:19 +0100 Subject: [PATCH 02/12] Update ticket status constants in get_ticket_status function --- cg/meta/orders/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index 743f428898..e344dacc51 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -1,3 +1,4 @@ +from cg.clients.freshdesk.constants import Status from cg.models.orders.constants import OrderType from cg.services.orders.constants import ORDER_TYPE_WORKFLOW_MAP from cg.services.orders.validation.models.case import Case @@ -42,5 +43,5 @@ def get_ticket_status(order: Order) -> int: """Get the ticket status based on the order""" if contains_only_existing_samples(order=order): - return 2 - return 3 + return Status.OPEN + return Status.PENDING From bd6401cb416194acb36019acc5c1128c63539220 Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:37:37 +0100 Subject: [PATCH 03/12] Add fixture for MIP DNA order with only existing samples and test ticket status --- .../orders_fixtures/order_fixtures.py | 10 ++++++++ .../orders/submitter/test_order_submitter.py | 25 ++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/tests/fixture_plugins/orders_fixtures/order_fixtures.py b/tests/fixture_plugins/orders_fixtures/order_fixtures.py index c92d1f15a3..d2c50f727c 100644 --- a/tests/fixture_plugins/orders_fixtures/order_fixtures.py +++ b/tests/fixture_plugins/orders_fixtures/order_fixtures.py @@ -147,3 +147,13 @@ def mip_dna_order_with_existing_samples(mip_dna_order_to_submit: dict) -> MipDna ExistingSample(internal_id="ACC1234") ) return mip_dna_order_with_existing_samples + + +@pytest.fixture +def mip_dna_order_with_only_existing_samples(mip_dna_order_to_submit: dict) -> MipDnaOrder: + """Returns a MIP DNA order containing only existing samples.""" + mip_dna_order_to_submit["user_id"] = 1 + mip_dna_order_with_only_existing_samples = MipDnaOrder.model_validate(mip_dna_order_to_submit) + for case in mip_dna_order_with_only_existing_samples.cases: + case.samples = [ExistingSample(internal_id="ACC1234")] + return mip_dna_order_with_existing_samples diff --git a/tests/services/orders/submitter/test_order_submitter.py b/tests/services/orders/submitter/test_order_submitter.py index a42292d9d9..b5b7437e10 100644 --- a/tests/services/orders/submitter/test_order_submitter.py +++ b/tests/services/orders/submitter/test_order_submitter.py @@ -5,7 +5,7 @@ from cg.clients.freshdesk.models import TicketResponse from cg.exc import TicketCreationError -from cg.meta.orders.utils import get_ticket_tags +from cg.meta.orders.utils import get_ticket_status, get_ticket_tags from cg.models.orders.constants import OrderType from cg.services.orders.constants import ORDER_TYPE_WORKFLOW_MAP from cg.services.orders.storing.constants import MAF_ORDER_ID @@ -206,3 +206,26 @@ def test_get_ticket_tags( # THEN the tags should be correct assert tags == expected_tags + + +@pytest.mark.parametrize( + "order_fixture, expected_status", + [ + ("mip_dna_order", 3), + ("mip_dna_order_with_existing_samples", 3), + ("mip_dna_order_with_only_existing_samples", 2), + ], +) +def test_get_ticket_status( + request: pytest.FixtureRequest, order_fixture: str, expected_status: int +): + """Test that the correct ticket status is returned based on the order samples.""" + + # GIVEN an order + order: Order = request.getfixturevalue(order_fixture) + + # WHEN getting the ticket status + status = get_ticket_status(order=order) + + # THEN the status should be correct + assert status == expected_status From dbd8bf1c34a2eb361f087fb2762ce06bf40c45b6 Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:37:54 +0100 Subject: [PATCH 04/12] Add ticket status retrieval in TicketHandler for ticket creation --- cg/services/orders/submitter/ticket_handler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cg/services/orders/submitter/ticket_handler.py b/cg/services/orders/submitter/ticket_handler.py index 8cb2bfe2c5..012e9442ff 100644 --- a/cg/services/orders/submitter/ticket_handler.py +++ b/cg/services/orders/submitter/ticket_handler.py @@ -5,7 +5,7 @@ from cg.clients.freshdesk.freshdesk_client import FreshdeskClient from cg.clients.freshdesk.models import TicketCreate, TicketResponse -from cg.meta.orders.utils import get_ticket_tags +from cg.meta.orders.utils import get_ticket_status, get_ticket_tags from cg.models.orders.constants import OrderType from cg.services.orders.constants import ORDER_TYPE_WORKFLOW_MAP from cg.services.orders.validation.models.order import Order @@ -39,6 +39,7 @@ def create_ticket( ) tags: list[str] = get_ticket_tags(order=order, order_type=order_type) + status: int = get_ticket_status(order=order) with TemporaryDirectory() as temp_dir: attachments: Path = self.create_attachment_file(order=order, temp_dir=temp_dir) @@ -55,6 +56,7 @@ def create_ticket( "cf_environment": self.env, }, attachments=[], + status=status, ) ticket_response: TicketResponse = self.client.create_ticket( ticket=freshdesk_ticket, attachments=[attachments] From 93b544864b07afb430c66b635ef26642f6ee2250 Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:50:15 +0100 Subject: [PATCH 05/12] Refactor contains_only_existing_samples to accept OrderWithCases and update get_ticket_status logic --- cg/meta/orders/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index e344dacc51..66ffd36c3e 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -29,7 +29,7 @@ def get_ticket_tags(order: Order, order_type: OrderType) -> list[str]: return tags -def contains_only_existing_samples(order: Order) -> bool: +def contains_only_existing_samples(order: OrderWithCases) -> bool: """Check if the order contains only existing samples""" for enumerated_case in order.enumerated_cases: @@ -41,7 +41,7 @@ def contains_only_existing_samples(order: Order) -> bool: def get_ticket_status(order: Order) -> int: """Get the ticket status based on the order""" - - if contains_only_existing_samples(order=order): - return Status.OPEN + if isinstance(order, OrderWithCases): + if contains_only_existing_samples(order=order): + return Status.OPEN return Status.PENDING From 9770d13daaae6c63d0838166bcd1f56a85972830 Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 22 Jan 2025 10:50:30 +0100 Subject: [PATCH 06/12] Fix return value in mip_dna_order_with_only_existing_samples function to return correct variable --- tests/fixture_plugins/orders_fixtures/order_fixtures.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fixture_plugins/orders_fixtures/order_fixtures.py b/tests/fixture_plugins/orders_fixtures/order_fixtures.py index d2c50f727c..95b98fa843 100644 --- a/tests/fixture_plugins/orders_fixtures/order_fixtures.py +++ b/tests/fixture_plugins/orders_fixtures/order_fixtures.py @@ -156,4 +156,4 @@ def mip_dna_order_with_only_existing_samples(mip_dna_order_to_submit: dict) -> M mip_dna_order_with_only_existing_samples = MipDnaOrder.model_validate(mip_dna_order_to_submit) for case in mip_dna_order_with_only_existing_samples.cases: case.samples = [ExistingSample(internal_id="ACC1234")] - return mip_dna_order_with_existing_samples + return mip_dna_order_with_only_existing_samples From 7efea83043dcce71c1c31bc3aaa6f1251e6c1c56 Mon Sep 17 00:00:00 2001 From: EliottBo <112384714+eliottBo@users.noreply.github.com> Date: Fri, 24 Jan 2025 08:40:47 +0100 Subject: [PATCH 07/12] Update cg/meta/orders/utils.py Co-authored-by: Vincent Janvid <69356202+Vince-janv@users.noreply.github.com> --- cg/meta/orders/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index 66ffd36c3e..2573376e2b 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -39,7 +39,7 @@ def contains_only_existing_samples(order: OrderWithCases) -> bool: return True -def get_ticket_status(order: Order) -> int: +def get_ticket_status(order: Order) -> Status: """Get the ticket status based on the order""" if isinstance(order, OrderWithCases): if contains_only_existing_samples(order=order): From 384ea305de2dffe5b256a48068155ef2ba3886ad Mon Sep 17 00:00:00 2001 From: EliottBo <112384714+eliottBo@users.noreply.github.com> Date: Fri, 24 Jan 2025 08:41:09 +0100 Subject: [PATCH 08/12] Update tests/services/orders/submitter/test_order_submitter.py Co-authored-by: Vincent Janvid <69356202+Vince-janv@users.noreply.github.com> --- tests/services/orders/submitter/test_order_submitter.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/services/orders/submitter/test_order_submitter.py b/tests/services/orders/submitter/test_order_submitter.py index b5b7437e10..5f64c002ee 100644 --- a/tests/services/orders/submitter/test_order_submitter.py +++ b/tests/services/orders/submitter/test_order_submitter.py @@ -211,9 +211,9 @@ def test_get_ticket_tags( @pytest.mark.parametrize( "order_fixture, expected_status", [ - ("mip_dna_order", 3), - ("mip_dna_order_with_existing_samples", 3), - ("mip_dna_order_with_only_existing_samples", 2), + ("mip_dna_order", Status.PENDING), + ("mip_dna_order_with_existing_samples", Status.PENDING), + ("mip_dna_order_with_only_existing_samples", Status.OPEN), ], ) def test_get_ticket_status( From a3836a0ec884b91fef337f5edb86c410860565e4 Mon Sep 17 00:00:00 2001 From: EliottBo <112384714+eliottBo@users.noreply.github.com> Date: Fri, 24 Jan 2025 08:41:57 +0100 Subject: [PATCH 09/12] Remove space cg/meta/orders/utils.py Co-authored-by: Vincent Janvid <69356202+Vince-janv@users.noreply.github.com> --- cg/meta/orders/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index 2573376e2b..16c521c1e4 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -31,7 +31,6 @@ def get_ticket_tags(order: Order, order_type: OrderType) -> list[str]: def contains_only_existing_samples(order: OrderWithCases) -> bool: """Check if the order contains only existing samples""" - for enumerated_case in order.enumerated_cases: case: Case = enumerated_case[1] if case.enumerated_new_samples: From 0965558b58bbeffdd9eb09929b086090e0907c1e Mon Sep 17 00:00:00 2001 From: eliott Date: Fri, 24 Jan 2025 09:30:05 +0100 Subject: [PATCH 10/12] Add import for Status constant in test_order_submitter.py --- tests/services/orders/submitter/test_order_submitter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/services/orders/submitter/test_order_submitter.py b/tests/services/orders/submitter/test_order_submitter.py index 5f64c002ee..3ff426d69d 100644 --- a/tests/services/orders/submitter/test_order_submitter.py +++ b/tests/services/orders/submitter/test_order_submitter.py @@ -3,6 +3,7 @@ import pytest +from cg.clients.freshdesk.constants import Status from cg.clients.freshdesk.models import TicketResponse from cg.exc import TicketCreationError from cg.meta.orders.utils import get_ticket_status, get_ticket_tags From 7eca66f839a114b4bae113faa4ff034cf04c38fd Mon Sep 17 00:00:00 2001 From: EliottBo <112384714+eliottBo@users.noreply.github.com> Date: Wed, 29 Jan 2025 13:14:19 +0100 Subject: [PATCH 11/12] Update cg/meta/orders/utils.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Isak Ohlsson Ã…ngnell <40887124+islean@users.noreply.github.com> --- cg/meta/orders/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index 16c521c1e4..b4b9b9e7f5 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -31,10 +31,8 @@ def get_ticket_tags(order: Order, order_type: OrderType) -> list[str]: def contains_only_existing_samples(order: OrderWithCases) -> bool: """Check if the order contains only existing samples""" - for enumerated_case in order.enumerated_cases: - case: Case = enumerated_case[1] - if case.enumerated_new_samples: - return False + if order.enumerated_new_samples: + return False return True From c08b4ba574ecfb864056057db701e3f7f0f4782d Mon Sep 17 00:00:00 2001 From: eliott Date: Wed, 29 Jan 2025 16:15:01 +0100 Subject: [PATCH 12/12] Fix indentation in contains_only_existing_samples function in utils.py --- cg/meta/orders/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cg/meta/orders/utils.py b/cg/meta/orders/utils.py index b4b9b9e7f5..45d8f34e5c 100644 --- a/cg/meta/orders/utils.py +++ b/cg/meta/orders/utils.py @@ -32,7 +32,7 @@ def get_ticket_tags(order: Order, order_type: OrderType) -> list[str]: def contains_only_existing_samples(order: OrderWithCases) -> bool: """Check if the order contains only existing samples""" if order.enumerated_new_samples: - return False + return False return True