mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
map correct uprn when parsing asset conditions 🟩
This commit is contained in:
parent
12bbd1a4fe
commit
13daa62bdf
2 changed files with 27 additions and 14 deletions
|
|
@ -13,8 +13,7 @@ class LbwfParser(Parser):
|
|||
|
||||
def parse(self, file_stream: BinaryIO) -> Any:
|
||||
wb = load_workbook(file_stream)
|
||||
urn_to_address_map: Dict[str, int] = LbwfParser._map_uprn_to_address(wb)
|
||||
print(urn_to_address_map)
|
||||
address_to_uprn_map: Dict[str, int] = LbwfParser._generate_address_to_uprn_dict(wb)
|
||||
|
||||
assets_sheet: Workbook = wb["Houses Asset Data"]
|
||||
rows: Iterator[Tuple[object | None, ...]] = assets_sheet.iter_rows(values_only=True)
|
||||
|
|
@ -25,19 +24,26 @@ class LbwfParser(Parser):
|
|||
|
||||
for row in rows:
|
||||
try:
|
||||
assets.append(LbwfParser._map_row_to_asset_record(row, header_indexes))
|
||||
assets.append(LbwfParser._map_row_to_asset_record(row, header_indexes, address_to_uprn_map))
|
||||
except Exception as e:
|
||||
logger.error(f"Error mapping LBWF row to asset record: {e}")
|
||||
|
||||
print(assets)
|
||||
return assets
|
||||
|
||||
@staticmethod
|
||||
def _map_row_to_asset_record(row: Any | Tuple[object | None, ...], header_indexes: Dict[str, int]) -> LbwfAssetCondition:
|
||||
def _map_row_to_asset_record(
|
||||
row: Any | Tuple[object | None, ...],
|
||||
header_indexes: Dict[str, int],
|
||||
address_to_uprn_map: Dict[str, int]
|
||||
) -> LbwfAssetCondition:
|
||||
address: str = row[header_indexes["ADDRESS"]]
|
||||
|
||||
return LbwfAssetCondition(
|
||||
uprn=0, #placeholder
|
||||
uprn=LbwfParser._get_uprn_from_address(address, address_to_uprn_map),
|
||||
prop_ref=row[header_indexes["PROP REF"]],
|
||||
domna=row[header_indexes["Domna"]],
|
||||
address=row[header_indexes["ADDRESS"]],
|
||||
address=address,
|
||||
ownership=row[header_indexes["OWNERSHIP"]],
|
||||
prop_status=row[header_indexes["PROP STATUS"]],
|
||||
prop_type=row[header_indexes["PROP TYPE"]],
|
||||
|
|
@ -57,8 +63,7 @@ class LbwfParser(Parser):
|
|||
)
|
||||
|
||||
@staticmethod
|
||||
def _map_uprn_to_address(wb: Workbook) -> Dict[str, int | None]:
|
||||
print(wb.sheetnames)
|
||||
def _generate_address_to_uprn_dict(wb: Workbook) -> Dict[str, int | None]:
|
||||
sheet: Workbook = wb["All Energy Breakdown "]
|
||||
|
||||
rows: Iterator[Tuple[object | None, ...]] = sheet.iter_rows(values_only=True)
|
||||
|
|
@ -96,4 +101,12 @@ class LbwfParser(Parser):
|
|||
index[header] = i
|
||||
|
||||
return index
|
||||
|
||||
def _get_uprn_from_address(address: str, address_to_uprn_map: Dict[str, int]) -> int | None:
|
||||
pseudo_name = address.split(",")[0]
|
||||
|
||||
if pseudo_name.lower() in (k.lower() for k in address_to_uprn_map.keys()):
|
||||
return address_to_uprn_map[pseudo_name.upper()]
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
|||
|
|
@ -87,16 +87,16 @@ def lbwf_homes_xlsx_bytes() -> BytesIO:
|
|||
])
|
||||
all_energy_breakdown.append([
|
||||
1,
|
||||
100,
|
||||
101,
|
||||
"100 RANDOM ROAD",
|
||||
200,
|
||||
None,
|
||||
"123 FAKE STREET",
|
||||
"A10 1AB"
|
||||
])
|
||||
all_energy_breakdown.append([
|
||||
2,
|
||||
200,
|
||||
None,
|
||||
"123 FAKE STREET",
|
||||
100,
|
||||
101,
|
||||
"100 RANDOM ROAD",
|
||||
"A10 1AB"
|
||||
])
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue