Skip to content

Commit 2bc89a4

Browse files
cgh ! use p_code instead of UUID for admin area HOPE core API push
1 parent 3043020 commit 2bc89a4

File tree

2 files changed

+6
-42
lines changed

2 files changed

+6
-42
lines changed

src/country_workspace/contrib/hope/geo.py

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
from country_workspace.cache.manager import cache_manager
99
from country_workspace.state import state
10-
from country_workspace.utils.fields import extract_uuid
1110

1211
from ...exceptions import RemoteError
1312

@@ -65,7 +64,6 @@ class AdminLevelChoice(APIChoicesMixin, ChildFieldMixin, forms.ChoiceField):
6564

6665
def __init__(self, **kwargs: Any) -> None:
6766
super().__init__(**kwargs)
68-
self.id_to_code, self.code_to_id = {}, {}
6967
self.choices = self.get_choices_for_parent_value(parent_value=state.tenant.slug)
7068

7169
def validate_with_parent(self, parent_value: Any, value: Any) -> None:
@@ -84,20 +82,11 @@ def get_choices_for_parent_value(
8482
):
8583
return [] if only_codes else [("", "")]
8684

87-
self.code_to_id = {r["p_code"]: str(extract_uuid(str(r["id"]), "Area:")) for r in filtered}
88-
self.id_to_code = {v: k for k, v in self.code_to_id.items()}
89-
90-
if only_codes:
91-
return list(self.code_to_id)
92-
return [("", ""), *[(r["p_code"], f"{r['p_code']} - {r['name']}") for r in filtered]]
93-
94-
def prepare_value(self, value: Any) -> str | None:
95-
val = super().prepare_value(value)
96-
return self.id_to_code.get(str(val), val)
97-
98-
def to_python(self, value: Any) -> str | None:
99-
val = self.code_to_id.get(value, value)
100-
return super().to_python(val)
85+
return (
86+
[r["p_code"] for r in filtered]
87+
if only_codes
88+
else [("", ""), *[(r["p_code"], f"{r['p_code']} - {r['name']}") for r in filtered]]
89+
)
10190

10291
def _get_valid_area_types(self) -> set[Any]:
10392
key = f"area_types_level_{self.level}"

tests/contrib/hope/test_geo.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
"previous": None,
3434
"results": [
3535
{
36-
"id": str(uuid4()),
3736
"name": "Kyivska",
3837
"p_code": "UA32",
3938
"area_type": str(uuid4()),
@@ -85,7 +84,7 @@ def test_admin_level_choice_validate(
8584
FlexFieldFactory(name="region", definition=fd2, fieldset=fs, master=country_field)
8685

8786
country = COUNTRY["results"][0]["iso_code2"]
88-
area_id = ADMIN1_UA["results"][0]["id"]
87+
area_id = ADMIN1_UA["results"][0]["p_code"]
8988
errors = fs.validate([{"country": country, "region": area_id}])
9089
assert errors == {}
9190

@@ -176,27 +175,3 @@ def test_admin_level_choice_cached_data(
176175

177176
assert fetched == cached_data
178177
mock_get.assert_not_called()
179-
180-
181-
@override_config(HOPE_API_URL="https://fake-hope.org/api/rest/")
182-
def test_admin_level_choice_prepare_value(
183-
db,
184-
mocker: MockerFixture,
185-
mocked_responses: RequestsMock,
186-
office: "Office",
187-
mock_area_type: mock.Mock,
188-
mock_cache: mock.Mock,
189-
):
190-
mocker.patch("country_workspace.contrib.hope.geo.state.tenant", office)
191-
mocked_responses.add(
192-
mocked_responses.GET,
193-
f"https://fake-hope.org/api/rest/{office.slug}/geo/areas/",
194-
json=ADMIN1_UA,
195-
)
196-
197-
field = Admin1Choice()
198-
rec = ADMIN1_UA["results"][0]
199-
200-
assert field.prepare_value(rec["id"]) == rec["p_code"]
201-
assert field.prepare_value(rec["p_code"]) == rec["p_code"]
202-
assert field.prepare_value("UNKNOWN") == "UNKNOWN"

0 commit comments

Comments
 (0)