Add output filename generation and workbook save flow

This commit is contained in:
Rob committed 2026-04-21 15:37:39 +02:00
1 parent 10e3ec8c12
commit 5436315952
2 files changed
+58 -5

No files matched your search

+53
View File
@@ -94,3 +94,56 @@ def build_employee_workbooks(
workbooks[employee_name] = workbook
return workbooks
def build_output_filename(
filename_pattern: str,
employee_name: str,
report_year: int,
report_month: int,
) -> str:
first_name, last_name = _split_name_for_filename(employee_name)
safe_first = first_name.replace(" ", "_")
safe_last = last_name.replace(" ", "_")
return filename_pattern.format(
year=report_year,
month=f"{report_month:02d}",
first_name=safe_first,
last_name=safe_last,
)
def save_employee_workbooks(
config: dict[str, Any],
employee_workbooks: dict[str, Workbook],
report_month: int,
report_year: int,
project_root: Path,
) -> list[Path]:
paths_cfg = config["paths"]
output_cfg = config["output"]
filename_pattern = output_cfg["filename_pattern"]
output_dir = project_root / paths_cfg["output_dir"]
output_dir.mkdir(parents=True, exist_ok=True)
saved_paths: list[Path] = []
used_names: set[str] = set()
for employee_name, workbook in employee_workbooks.items():
filename = build_output_filename(
filename_pattern=filename_pattern,
employee_name=employee_name,
report_year=report_year,
report_month=report_month,
)
if filename in used_names:
raise ValueError(f"Output filename collision detected: {filename}")
used_names.add(filename)
output_path = output_dir / filename
workbook.save(output_path)
workbook.close()
saved_paths.append(output_path)
return saved_paths