mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
flatten sap property to excel row object 🟩
This commit is contained in:
parent
fcceeb2736
commit
7904eca1fa
1 changed files with 29 additions and 1 deletions
|
|
@ -172,5 +172,33 @@ def parse_rdsap(xml_string: str) -> SapPropertyDetails:
|
|||
return result
|
||||
|
||||
|
||||
def _normalise_identifier(identifier: str) -> str:
|
||||
return identifier.lower().replace(" ", "_").replace("-", "_")
|
||||
|
||||
|
||||
def flatten_sap_property(details: SapPropertyDetails) -> dict[str, Any]:
|
||||
raise NotImplementedError
|
||||
row: dict[str, Any] = {}
|
||||
|
||||
row["address"] = details["address"]
|
||||
row["property_type"] = details["property_type"]
|
||||
|
||||
for bp in details["building_parts"]:
|
||||
prefix = _normalise_identifier(bp["identifier"])
|
||||
|
||||
for i, floor in enumerate(bp["floors"], start=1):
|
||||
floor_prefix = f"{prefix}_floor_{i}"
|
||||
row[f"{floor_prefix}_area_m2"] = floor["area_m2"]
|
||||
row[f"{floor_prefix}_height_m"] = floor["height_m"]
|
||||
row[f"{floor_prefix}_heat_loss_perimeter_m"] = floor["heat_loss_perimeter_m"]
|
||||
row[f"{floor_prefix}_party_wall_length_m"] = floor["party_wall_length_m"]
|
||||
|
||||
roof = bp.get("roof")
|
||||
if roof:
|
||||
if "construction" in roof:
|
||||
row[f"{prefix}_roof_construction"] = roof["construction"]
|
||||
if "insulation_location" in roof:
|
||||
row[f"{prefix}_roof_insulation_location"] = roof["insulation_location"]
|
||||
if "insulation_thickness_mm" in roof:
|
||||
row[f"{prefix}_roof_insulation_thickness_mm"] = roof["insulation_thickness_mm"]
|
||||
|
||||
return row
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue