40 lines
1.8 KiB
Python
40 lines
1.8 KiB
Python
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,
|
|
}
|