39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
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,
|
|
}
|