From daee3a4c90a06b446da113186330f828119ab885 Mon Sep 17 00:00:00 2001 From: level09 Date: Sat, 25 Jul 2026 13:42:04 +0300 Subject: [PATCH] fix(labels): accept path fields the edit form sends back --- enferno/admin/validation/models.py | 3 +++ tests/test_lookup_crud.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/enferno/admin/validation/models.py b/enferno/admin/validation/models.py index c03ce2eeb..32f740122 100644 --- a/enferno/admin/validation/models.py +++ b/enferno/admin/validation/models.py @@ -829,6 +829,9 @@ class LabelValidationModel(StrictValidationModel): # sent by tree view edit (build_tree node shape), not used by from_json parent_label_id: Optional[int] = None children: Optional[List] = None + # computed by to_dict for hierarchy display, not used by from_json + path: Optional[str] = None + path_ar: Optional[str] = None class LabelRequestModel(BaseValidationModel): diff --git a/tests/test_lookup_crud.py b/tests/test_lookup_crud.py index 66f453e03..9acc4a4b4 100644 --- a/tests/test_lookup_crud.py +++ b/tests/test_lookup_crud.py @@ -518,6 +518,26 @@ def test_lookup_search_by_translated_title(request, session, entity, list_url, f assert item.id in ids +def test_label_update_accepts_its_own_serialization(request, session): + """The edit form PUTs back what to_dict returned, path fields included.""" + from enferno.admin.models import Label + + parent = Label(title="Parent") + session.add(parent) + session.commit() + label = Label(title="Child", parent_label_id=parent.id) + session.add(label) + session.commit() + + payload = label.to_dict() + assert "path" in payload and "path_ar" in payload + payload["title"] = "Renamed" + + client = request.getfixturevalue("admin_client") + resp = client.put(f"/admin/api/label/{label.id}", json={"item": payload}, headers=HEADERS) + assert resp.status_code == 200 + + def test_label_mode2_includes_translated_title_and_path(session): from enferno.admin.models import Label