from department.models import Department def serialize_head_option(user) -> dict: return {"id": str(user.id), "name": user.name, "email": user.email} def serialize_department( department: Department, *, head_name: str | None = None, parent_name: str | None = None, metrics: dict | None = None, ) -> dict: return { "id": str(department.id), "name": department.name, "short_code": department.short_code, "subtitle": department.subtitle, "description": department.description, "is_active": department.is_active, "parent_department_id": ( str(department.parent_department_id) if department.parent_department_id else None ), "parent_department_name": parent_name, "department_head_id": ( str(department.department_head_id) if department.department_head_id else None ), "department_head_name": head_name, "location": list(department.location or []), "job_posts": (metrics or {}).get("job_posts", 0), "open_roles": (metrics or {}).get("open_roles", 0), "candidates": (metrics or {}).get("candidates", 0), "created_by": str(department.created_by) if department.created_by else None, "updated_by": str(department.updated_by) if department.updated_by else None, "created_at": department.created_at.isoformat() if department.created_at else None, "updated_at": department.updated_at.isoformat() if department.updated_at else None, }