From 1dd3baeac5e49042889e0d064535b0bc2f723e78 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 5 Jun 2026 12:52:36 +0000 Subject: [PATCH] =?UTF-8?q?Map=20door=20custom=5Fdisplayable=5Ffields=20to?= =?UTF-8?q?=20DoorVentilation=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- datatypes/magicplan/domain/mapper.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/datatypes/magicplan/domain/mapper.py b/datatypes/magicplan/domain/mapper.py index 1342cc8b..71cb91c2 100644 --- a/datatypes/magicplan/domain/mapper.py +++ b/datatypes/magicplan/domain/mapper.py @@ -102,4 +102,21 @@ def _map_window_ventilation( def _map_door(wi: api.WallItem) -> Door: - return Door(width_mm=round(wi.size.x, 2)) + return Door( + width_mm=round(wi.size.x, 2), + ventilation=_map_door_ventilation(wi.custom_displayable_fields), + ) + + +def _map_door_ventilation( + fields: list[api.SurveyField], +) -> Optional[DoorVentilation]: + if not fields: + return None + by_label = {f.label: f for f in fields} + f = by_label.get("Door Undercut (mm)") + if f is None or not f.value.has_value: + return None + raw = f.value.value + undercut = float(raw[0] if isinstance(raw, list) else raw) + return DoorVentilation(undercut_mm=undercut)