Add output filename generation and workbook save flow
This commit is contained in:
1 parent
10e3ec8c12
commit
5436315952
2 files changed
+58
-5
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user