diff --git a/datatypes/magicplan/domain/mapper.py b/datatypes/magicplan/domain/mapper.py index 353a53c8..f00c6780 100644 --- a/datatypes/magicplan/domain/mapper.py +++ b/datatypes/magicplan/domain/mapper.py @@ -7,10 +7,24 @@ def map_plan(mp: MagicPlan) -> Plan: return Plan( uid=mp.plan.id, name=mp.plan.name, + address=_map_address(mp.plan.address), + postcode=mp.plan.address.postal_code if mp.plan.address else None, floors=[_map_floor(f) for f in mp.plan_detail.plan.floors], ) +def _map_address(addr: api.Address | None) -> str | None: + if addr is None: + return None + street = ( + f"{addr.street_number} {addr.street}".strip() + if addr.street_number + else addr.street + ) + parts = [p for p in [street, addr.city, addr.country] if p] + return ", ".join(parts) if parts else None + + def _map_floor(f: api.Floor) -> Floor: return Floor( level=f.level, diff --git a/datatypes/magicplan/domain/models.py b/datatypes/magicplan/domain/models.py index 2a8625f3..4dda8859 100644 --- a/datatypes/magicplan/domain/models.py +++ b/datatypes/magicplan/domain/models.py @@ -35,4 +35,6 @@ class Floor: class Plan: uid: str name: str | None + address: str | None = None + postcode: str | None = None floors: list[Floor] = field(default_factory=list[Floor])