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

22 lines
1.1 KiB
Python

def serialize_task(row, users_by_id=None) -> dict:
"""`users_by_id` is one batched Users lookup done in views — never a lazy
per-row load. Assignee name/role ride along so the screen can render the
real user without a second request."""
users_by_id = users_by_id or {}
assignee = users_by_id.get(row.assignee_id)
return {
"id": str(row.id) if row.id else None,
"title": row.title,
"status": row.status,
"priority": row.priority,
"due_date": row.due_date.isoformat() if row.due_date else None,
"assignee_id": str(row.assignee_id) if row.assignee_id else None,
"assignee_name": assignee.name if assignee else None,
"assignee_role": assignee.role.role_name if assignee and assignee.role else None,
"inbox_id": row.inbox_id,
"job_post_id": str(row.job_post_id) if row.job_post_id else None,
"created_by": str(row.created_by) if row.created_by else None,
"created_at": row.created_at.isoformat() if row.created_at else None,
"updated_at": row.updated_at.isoformat() if row.updated_at else None,
}