From 65a40ad371db628e9457a19f94901c9bcd83e864 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 15 May 2026 15:36:57 +0000 Subject: [PATCH] =?UTF-8?q?=5Fwrite=5Fheaders=20uses=2025=20columns,=202?= =?UTF-8?q?=20rows,=20and=20"Doors"=20group=20label=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/magic_plan/audit_script.py | 52 ++++++++++++++---------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/backend/magic_plan/audit_script.py b/backend/magic_plan/audit_script.py index d8a50328..202aa8ac 100644 --- a/backend/magic_plan/audit_script.py +++ b/backend/magic_plan/audit_script.py @@ -14,7 +14,7 @@ UPLOADED_FILE_ID: int = 7843 _HEADER_FILL = PatternFill("solid", fgColor="D9D9D9") _FLOOR_FILL = PatternFill("solid", fgColor="BDD7EE") _BOLD = Font(bold=True) -_TOTAL_COLS = 31 # A–AE +_TOTAL_COLS = 25 # A–Y @dataclass @@ -82,15 +82,18 @@ def _build_rows(plan: Plan) -> list[AuditRow]: return rows +_BLANK_SEPARATOR_COLS = {5, 21} + + def _write_headers(ws: Worksheet) -> None: # Row 1: group labels (merged) _merge_bold_fill(ws, 1, 1, 1, 4, "Room") - # E1 blank separator + # col 5: blank separator _merge_bold_fill(ws, 1, 6, 1, 11, "Window Area") - _merge_bold_fill(ws, 1, 12, 1, 21, "Openings") - _merge_bold_fill(ws, 1, 22, 1, 26, "Trickle Vents") - # AA (27) blank separator - _merge_bold_fill(ws, 1, 28, 1, 31, "Door Undercuts") + _merge_bold_fill(ws, 1, 12, 1, 15, "Openings") + _merge_bold_fill(ws, 1, 16, 1, 20, "Trickle Vents") + # col 21: blank separator + _merge_bold_fill(ws, 1, 22, 1, 25, "Doors") # Row 2: column labels _header_cell(ws, 2, 1, "Room") @@ -104,29 +107,24 @@ def _write_headers(ws: Worksheet) -> None: _header_cell(ws, 2, 10, "Area m²") _header_cell(ws, 2, 11, "Opening Type") _header_cell(ws, 2, 12, "No. of Openings") - for i, col in enumerate([13, 15, 17, 19]): - _merge_bold_fill(ws, 2, col, 2, col + 1, f"Opening {i + 1}") - _header_cell(ws, 2, 21, "Total Area m²") - _header_cell(ws, 2, 22, "Blocked") - _header_cell(ws, 2, 23, "Pictured") - _header_cell(ws, 2, 24, "Effective Area") - _header_cell(ws, 2, 25, "Count") - _header_cell(ws, 2, 26, "Total Effective Area") - _header_cell(ws, 2, 28, "Location") - _header_cell(ws, 2, 29, "Width mm") - _header_cell(ws, 2, 30, "Undercut mm") - _header_cell(ws, 2, 31, "Area mm²") + _header_cell(ws, 2, 13, "Opening Width m") + _header_cell(ws, 2, 14, "Opening Height m") + _header_cell(ws, 2, 15, "Total Area m²") + _header_cell(ws, 2, 16, "Blocked") + _header_cell(ws, 2, 17, "Pictured") + _header_cell(ws, 2, 18, "Effective Area") + _header_cell(ws, 2, 19, "Count") + _header_cell(ws, 2, 20, "Total Effective Area") + _header_cell(ws, 2, 22, "Location") + _header_cell(ws, 2, 23, "Width mm") + _header_cell(ws, 2, 24, "Undercut mm") + _header_cell(ws, 2, 25, "Area mm²") - # Row 3: Width/Height sub-headers under Opening 1–4 - for col in [13, 15, 17, 19]: - _header_cell(ws, 3, col, "Width m") - _header_cell(ws, 3, col + 1, "Height m") - - # Apply fill to all header cells in rows 1–3 - for row in range(1, 4): + # Apply fill to header cells in rows 1–2, skipping blank separator columns + for row in range(1, 3): for col in range(1, _TOTAL_COLS + 1): - cell = ws.cell(row=row, column=col) - cell.fill = _HEADER_FILL + if col not in _BLANK_SEPARATOR_COLS: + ws.cell(row=row, column=col).fill = _HEADER_FILL def _write_data_rows(ws: Worksheet, rows: list[AuditRow]) -> None: