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]: