22 lines
1.1 KiB
Python
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,
|
|
}
|