Skip to content

Commit b612889

Browse files
authored
Merge pull request #87 from itk-dev-rpa/feature/get_nova_case
Added get_case in nova
2 parents 77e4340 + 1f30e8c commit b612889

File tree

3 files changed

+35
-12
lines changed

3 files changed

+35
-12
lines changed

changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Added
1111

1212
- misc.cpr_util: Function to get birth date from cpr number.
13+
- kmd_nova.nova_cases: Function to get a case on its uuid.
1314

1415
## [2.7.1] - 2024-09-24
1516

itk_dev_shared_components/kmd_nova/nova_cases.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,28 @@
1212
from itk_dev_shared_components.kmd_nova.util import datetime_from_iso_string
1313

1414

15+
def get_case(case_uuid: str, nova_access: NovaAccess) -> NovaCase:
16+
"""Get a case from based on its uuid.
17+
18+
Args:
19+
case_uuid: The uuid of the case to get.
20+
nova_access: The NovaAccess object used to authenticate.
21+
22+
Raises:
23+
ValueError: If no case was found.
24+
25+
Returns:
26+
The case with the given uuid.
27+
"""
28+
payload = _create_payload(case_uuid=case_uuid)
29+
cases = _get_nova_cases(nova_access, payload)
30+
31+
if not cases:
32+
raise ValueError(f"No case found with the given uuid: {case_uuid}")
33+
34+
return cases[0]
35+
36+
1537
def get_cases(nova_access: NovaAccess, cpr: str = None, case_number: str = None, case_title: str = None, limit: int = 100) -> list[NovaCase]:
1638
"""Search for cases on different search terms.
1739
Currently supports search on cpr number, case number and case title. At least one search term must be given.
@@ -33,7 +55,7 @@ def get_cases(nova_access: NovaAccess, cpr: str = None, case_number: str = None,
3355
if not any((cpr, case_number, case_title)):
3456
raise ValueError("No search terms given.")
3557

36-
payload = _create_payload(cpr, "CprNummer", case_number, case_title, limit)
58+
payload = _create_payload(identification=cpr, identification_type="CprNummer", case_number=case_number, case_title=case_title, limit=limit)
3759
return _get_nova_cases(nova_access, payload)
3860

3961

@@ -58,7 +80,7 @@ def get_cvr_cases(nova_access: NovaAccess, cvr: str = None, case_number: str =
5880
if not any((cvr, case_number, case_title)):
5981
raise ValueError("No search terms given.")
6082

61-
payload = _create_payload(cvr, "CvrNummer", case_number, case_title, limit)
83+
payload = _create_payload(identification=cvr, identification_type="CvrNummer", case_number=case_number, case_title=case_title, limit=limit)
6284
return _get_nova_cases(nova_access, payload)
6385

6486

@@ -113,10 +135,11 @@ def _get_nova_cases(nova_access: NovaAccess, payload: dict) -> list[NovaCase]:
113135
return cases
114136

115137

116-
def _create_payload(identification: str = None, identification_type: str = "CprNummer", case_number: str = None, case_title: str = None, limit: int = 100) -> dict:
138+
def _create_payload(*, case_uuid: str = None, identification: str = None, identification_type: str = "CprNummer", case_number: str = None, case_title: str = None, limit: int = 100) -> dict:
117139
return {
118140
"common": {
119-
"transactionId": str(uuid.uuid4())
141+
"transactionId": str(uuid.uuid4()),
142+
"uuid": case_uuid
120143
},
121144
"paging": {
122145
"startRow": 1,

tests/test_nova_api/test_cases.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ def test_get_cvr_cases(self):
8787
nova_cases.get_cvr_cases(nova_access=self.nova_access)
8888

8989
def test_add_case(self):
90-
"""Test adding a case to Nova."""
90+
"""Test adding a case to Nova.
91+
Also tests getting a case on uuid.
92+
"""
9193
nova_party = os.getenv('NOVA_PARTY').split(',')
9294
party = CaseParty(
9395
role="Primær",
@@ -126,17 +128,14 @@ def test_add_case(self):
126128
nova_case = None
127129
for _ in range(10):
128130
time.sleep(1)
129-
cases = nova_cases.get_cases(self.nova_access, cpr=party.identification, case_title="Test")
130-
for c in cases:
131-
if c.title == case.title:
132-
nova_case = c
133-
break
134-
if nova_case:
131+
try:
132+
nova_case = nova_cases.get_case(case.uuid, self.nova_access)
135133
break
134+
except ValueError:
135+
pass
136136

137137
self.assertIsNotNone(nova_case)
138138

139-
nova_case = cases[0]
140139
self.assertEqual(nova_case.uuid, case.uuid)
141140
self.assertEqual(nova_case.title, case.title)
142141
self.assertEqual(nova_case.progress_state, case.progress_state)

0 commit comments

Comments
 (0)