def _date(value): return value.isoformat() if value else None def serialize_reference_check(row, names=None) -> dict: """`names` is {user_id: name} from one batched Users.names_by_ids lookup in views, so the recruiter / candidate search dropdowns can preselect on edit.""" names = names or {} return { "id": str(row.id) if row.id else None, "recruiter_id": str(row.recruiter_id) if row.recruiter_id else None, "recruiter_name": names.get(str(row.recruiter_id)) if row.recruiter_id else None, "candidate_id": str(row.candidate_id) if row.candidate_id else None, "candidate_name": names.get(str(row.candidate_id)) if row.candidate_id else None, "record_overview": { "position_applied": row.position_applied, "referee_name": row.referee_name, "date_time": _date(row.date_time), "referee_title": row.referee_title, "referee_organization": row.referee_organization, "relationship_duration": row.relationship_duration, }, "professional_feedback": { "scope_of_relationship": row.scope_of_relationship, "work_approach": row.work_approach, "leadership": row.leadership, "communication": row.communication, "agility": row.agility, }, "referee_signoff": { "referee_name": row.signoff_referee_name, "designation": row.signoff_designation, "signed_date": _date(row.signoff_date), }, "created_by": str(row.created_by) if row.created_by else None, "created_by_name": names.get(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, }