From 4553e9937bb8ee10dcb61fd86647f48c8695d5cb Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 19 Jan 2026 16:28:51 +0000 Subject: [PATCH] =?UTF-8?q?parse=20lbwf=20houses=20=F0=9F=9F=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/condition/parsing/lbwf_parser.py | 54 ++++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/backend/condition/parsing/lbwf_parser.py b/backend/condition/parsing/lbwf_parser.py index fd65e24a..2d6463c9 100644 --- a/backend/condition/parsing/lbwf_parser.py +++ b/backend/condition/parsing/lbwf_parser.py @@ -25,36 +25,36 @@ class LbwfParser(Parser): for row in rows: try: - install_date: date = normalise_date(row[header_indexes["INSTALL DATE"]]) - except ValueError as e: - logger.error(f"Failed to process LBWF asset due to badly formatted date: {e}") - continue + assets.append(LbwfParser._map_row_to_asset_record(row, header_indexes)) + except Exception as e: + logger.error(f"Error mapping LBWF row to asset record: {e}") - assets.append(LbwfAssetCondition( - uprn=0, #placeholder - prop_ref=row[header_indexes["PROP REF"]], - domna=row[header_indexes["Domna"]], - address=row[header_indexes["ADDRESS"]], - ownership=row[header_indexes["OWNERSHIP"]], - prop_status=row[header_indexes["PROP STATUS"]], - prop_type=row[header_indexes["PROP TYPE"]], - prop_sub_type=row[header_indexes["PROP SUB TYPE"]], - element_group=row[header_indexes["ELEMENT GROUP"]], - element_code=row[header_indexes["ELEMENT CODE"]], - element_code_description=row[header_indexes["ELEMENT CODE DESCRIPTION"]], - attribute_code=row[header_indexes["ATTRIBUTE CODE"]], - attribute_code_description=row[header_indexes["ATTRIBUTE CODE DESCRIPTION"]], - element_date_value=row[header_indexes["ELEMENT DATE VALUE"]], - element_numerical_value=row[header_indexes["ELEMENT NUMERIC VALUE"]], - element_text_value=row[header_indexes["ELEMENT TEXT VALUE"]], - quantity=row[header_indexes["QUANTITY"]], - install_date=install_date, - remaining_life=row[header_indexes["REMAINING LIFE"]], - element_comments=row[header_indexes["ELEMENT COMMENTS"]], - )) - return assets + @staticmethod + def _map_row_to_asset_record(row: Any | Tuple[object | None, ...], header_indexes: Dict[str, int]) -> LbwfAssetCondition: + return LbwfAssetCondition( + uprn=0, #placeholder + prop_ref=row[header_indexes["PROP REF"]], + domna=row[header_indexes["Domna"]], + address=row[header_indexes["ADDRESS"]], + ownership=row[header_indexes["OWNERSHIP"]], + prop_status=row[header_indexes["PROP STATUS"]], + prop_type=row[header_indexes["PROP TYPE"]], + prop_sub_type=row[header_indexes["PROP SUB TYPE"]], + element_group=row[header_indexes["ELEMENT GROUP"]], + element_code=row[header_indexes["ELEMENT CODE"]], + element_code_description=row[header_indexes["ELEMENT CODE DESCRIPTION"]], + attribute_code=row[header_indexes["ATTRIBUTE CODE"]], + attribute_code_description=row[header_indexes["ATTRIBUTE CODE DESCRIPTION"]], + element_date_value=row[header_indexes["ELEMENT DATE VALUE"]], + element_numerical_value=row[header_indexes["ELEMENT NUMERIC VALUE"]], + element_text_value=row[header_indexes["ELEMENT TEXT VALUE"]], + quantity=row[header_indexes["QUANTITY"]], + install_date=normalise_date(row[header_indexes["INSTALL DATE"]]), + remaining_life=row[header_indexes["REMAINING LIFE"]], + element_comments=row[header_indexes["ELEMENT COMMENTS"]], + ) @staticmethod def _map_uprn_to_address(wb: Workbook) -> Dict[str, int | None]: