HR-ATS-Portal/backend/department/serializers.py

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,
}