mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +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:
|
def parse(self, file_stream: BinaryIO) -> Any:
|
||||||
wb = load_workbook(file_stream)
|
wb = load_workbook(file_stream)
|
||||||
urn_to_address_map: Dict[str, int] = LbwfParser._map_uprn_to_address(wb)
|
address_to_uprn_map: Dict[str, int] = LbwfParser._generate_address_to_uprn_dict(wb)
|
||||||
print(urn_to_address_map)
|
|
||||||
|
|
||||||
assets_sheet: Workbook = wb["Houses Asset Data"]
|
assets_sheet: Workbook = wb["Houses Asset Data"]
|
||||||
rows: Iterator[Tuple[object | None, ...]] = assets_sheet.iter_rows(values_only=True)
|
rows: Iterator[Tuple[object | None, ...]] = assets_sheet.iter_rows(values_only=True)
|
||||||
|
|
@ -25,19 +24,26 @@ class LbwfParser(Parser):
|
||||||
|
|
||||||
for row in rows:
|
for row in rows:
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
logger.error(f"Error mapping LBWF row to asset record: {e}")
|
logger.error(f"Error mapping LBWF row to asset record: {e}")
|
||||||
|
|
||||||
|
print(assets)
|
||||||
return assets
|
return assets
|
||||||
|
|
||||||
@staticmethod
|
@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(
|
return LbwfAssetCondition(
|
||||||
uprn=0, #placeholder
|
uprn=LbwfParser._get_uprn_from_address(address, address_to_uprn_map),
|
||||||
prop_ref=row[header_indexes["PROP REF"]],
|
prop_ref=row[header_indexes["PROP REF"]],
|
||||||
domna=row[header_indexes["Domna"]],
|
domna=row[header_indexes["Domna"]],
|
||||||
address=row[header_indexes["ADDRESS"]],
|
address=address,
|
||||||
ownership=row[header_indexes["OWNERSHIP"]],
|
ownership=row[header_indexes["OWNERSHIP"]],
|
||||||
prop_status=row[header_indexes["PROP STATUS"]],
|
prop_status=row[header_indexes["PROP STATUS"]],
|
||||||
prop_type=row[header_indexes["PROP TYPE"]],
|
prop_type=row[header_indexes["PROP TYPE"]],
|
||||||
|
|
@ -57,8 +63,7 @@ class LbwfParser(Parser):
|
||||||
)
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _map_uprn_to_address(wb: Workbook) -> Dict[str, int | None]:
|
def _generate_address_to_uprn_dict(wb: Workbook) -> Dict[str, int | None]:
|
||||||
print(wb.sheetnames)
|
|
||||||
sheet: Workbook = wb["All Energy Breakdown "]
|
sheet: Workbook = wb["All Energy Breakdown "]
|
||||||
|
|
||||||
rows: Iterator[Tuple[object | None, ...]] = sheet.iter_rows(values_only=True)
|
rows: Iterator[Tuple[object | None, ...]] = sheet.iter_rows(values_only=True)
|
||||||
|
|
@ -96,4 +101,12 @@ class LbwfParser(Parser):
|
||||||
index[header] = i
|
index[header] = i
|
||||||
|
|
||||||
return index
|
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([
|
all_energy_breakdown.append([
|
||||||
1,
|
1,
|
||||||
100,
|
200,
|
||||||
101,
|
None,
|
||||||
"100 RANDOM ROAD",
|
"123 FAKE STREET",
|
||||||
"A10 1AB"
|
"A10 1AB"
|
||||||
])
|
])
|
||||||
all_energy_breakdown.append([
|
all_energy_breakdown.append([
|
||||||
2,
|
2,
|
||||||
200,
|
100,
|
||||||
None,
|
101,
|
||||||
"123 FAKE STREET",
|
"100 RANDOM ROAD",
|
||||||
"A10 1AB"
|
"A10 1AB"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue