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

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