Skip to content

Commit e95349a

Browse files
committed
Moved institution-processing functions from add_institution_processor to util
Since these functions are now used in more than one location (`add_insti_proc` and `prepay_proc`), it makes sense for them to be relocated to `util` The test case checking institution-processing has changed slightly
1 parent 6e2cacf commit e95349a

File tree

2 files changed

+5
-30
lines changed

2 files changed

+5
-30
lines changed

process_report/processors/add_institution_processor.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,6 @@
1414

1515
@dataclass
1616
class AddInstitutionProcessor(processor.Processor):
17-
@staticmethod
18-
def _get_institute_mapping(institute_list: list):
19-
institute_map = dict()
20-
for institute_info in institute_list:
21-
for domain in institute_info["domains"]:
22-
institute_map[domain] = institute_info["display_name"]
23-
24-
return institute_map
25-
26-
@staticmethod
27-
def _get_institution_from_pi(institute_map, pi_uname):
28-
institution_domain = pi_uname.split("@")[-1]
29-
for i in range(institution_domain.count(".") + 1):
30-
if institution_name := institute_map.get(institution_domain, ""):
31-
break
32-
institution_domain = institution_domain[institution_domain.find(".") + 1 :]
33-
34-
if institution_name == "":
35-
logger.warning(f"PI name {pi_uname} does not match any institution!")
36-
37-
return institution_name
38-
3917
def _add_institution(self):
4018
"""Determine every PI's institution name, logging any PI whose institution cannot be determined
4119
This is performed by `get_institution_from_pi()`, which tries to match the PI's username to
@@ -49,7 +27,7 @@ def _add_institution(self):
4927
The list of mappings are defined in `institute_map.json`.
5028
"""
5129
institute_list = util.load_institute_list()
52-
institute_map = self._get_institute_mapping(institute_list)
30+
institute_map = util.get_institute_mapping(institute_list)
5331
self.data = self.data.astype({invoice.INSTITUTION_FIELD: "str"})
5432
for i, row in self.data.iterrows():
5533
pi_name = row[invoice.PI_FIELD]
@@ -58,7 +36,7 @@ def _add_institution(self):
5836
else:
5937
self.data.at[
6038
i, invoice.INSTITUTION_FIELD
61-
] = self._get_institution_from_pi(institute_map, pi_name)
39+
] = util.get_institution_from_pi(institute_map, pi_name)
6240

6341
def _process(self):
6442
self._add_institution()

process_report/tests/unit/processors/test_add_institution_processor.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
from unittest import TestCase
22

3-
from process_report.tests import util as test_utils
3+
from process_report import util
44

55

6-
class TestAddInstituteProcessor(TestCase):
6+
class TestAddInstitute(TestCase):
77
def test_get_pi_institution(self):
88
institute_map = {
99
"harvard.edu": "Harvard University",
@@ -32,10 +32,7 @@ def test_get_pi_institution(self):
3232
"[email protected]": "Beth Israel Deaconess Medical Center",
3333
}
3434

35-
add_institute_proc = test_utils.new_add_institution_processor()
36-
3735
for pi_email, answer in answers.items():
3836
self.assertEqual(
39-
add_institute_proc._get_institution_from_pi(institute_map, pi_email),
40-
answer,
37+
util.get_institution_from_pi(institute_map, pi_email), answer
4138
)

0 commit comments

Comments
 (0)