from datetime import datetime from pathlib import Path def parse_doc_title_w_placeholders( title: str, correspondent_name: str, doc_type_name: str, owner_username: str, local_added: datetime, original_filename: str, created: datetime | None = None, ) -> str: """ Available title placeholders for Workflows depend on what has already been assigned, e.g. for pre-consumption triggers created will not have been parsed yet, but it will for added / updated triggers """ formatting = { "correspondent": correspondent_name, "document_type": doc_type_name, "added": local_added.isoformat(), "added_year": local_added.strftime("%Y"), "added_year_short": local_added.strftime("%y"), "added_month": local_added.strftime("%m"), "added_month_name": local_added.strftime("%B"), "added_month_name_short": local_added.strftime("%b"), "added_day": local_added.strftime("%d"), "added_time": local_added.strftime("%H:%M"), "owner_username": owner_username, "original_filename": Path(original_filename).stem, } if created is not None: formatting.update( { "created": created.isoformat(), "created_year": created.strftime("%Y"), "created_year_short": created.strftime("%y"), "created_month": created.strftime("%m"), "created_month_name": created.strftime("%B"), "created_month_name_short": created.strftime("%b"), "created_day": created.strftime("%d"), "created_time": created.strftime("%H:%M"), }, ) return title.format(**formatting).strip()