From ec7ba1f0d3cc812fd5eceb05805743558ace6f32 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 7 Jul 2026 11:40:24 +0000 Subject: [PATCH] =?UTF-8?q?A=20property=20without=20override=20or=20EPC=20?= =?UTF-8?q?falls=20back=20to=20the=20legacy=20column=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- backend/app/modelling/property_filters.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/backend/app/modelling/property_filters.py b/backend/app/modelling/property_filters.py index 8a1428867..b4ea91ddf 100644 --- a/backend/app/modelling/property_filters.py +++ b/backend/app/modelling/property_filters.py @@ -60,9 +60,7 @@ def resolve_filtered_property_ids( if filters.property_types is not None: wanted = set(filters.property_types) - types = _resolved_property_types( - session, [row.id for row in candidates if row.id is not None] - ) + types = _resolved_property_types(session, candidates) candidates = [ row for row in candidates @@ -88,10 +86,16 @@ _PROPERTY_TYPE_CODES: dict[str, str] = { def _resolved_property_types( - session: Session, property_ids: list[int] + session: Session, candidates: list[PropertyRow] ) -> dict[int, str]: """Each property's effective property_type per the ADR-0056 precedence: - override (building_part 0) → lodged EPC.""" + override (building_part 0) → lodged EPC → predicted EPC → legacy column.""" + property_ids = [row.id for row in candidates if row.id is not None] + by_legacy_column = { + row.id: row.property_type + for row in candidates + if row.id is not None and row.property_type is not None + } overrides = session.exec( select(PropertyOverrideRow) .where(col(PropertyOverrideRow.property_id).in_(property_ids)) @@ -119,6 +123,7 @@ def _resolved_property_types( by_override.get(pid) or by_epc_source["lodged"].get(pid) or by_epc_source["predicted"].get(pid) + or by_legacy_column.get(pid) ) if value is not None: resolved[pid] = value