Spaces:
Runtime error
Runtime error
File size: 1,837 Bytes
b7ed26f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
from typing import List, Dict, Any
from sqlalchemy.orm import Session as SQLAlchemySessionType
from fastapi.concurrency import run_in_threadpool
from src import crud, models
async def format_student_clearance_details(
db: SQLAlchemySessionType,
student_orm: models.Student
) -> models.ClearanceDetail:
"""
Formats clearance details for a student.
Args:
db (SQLAlchemySessionType): Database session.
student_orm (models.Student): ORM model of the student.
Returns:
models.ClearanceDetail: Formatted clearance details.
"""
statuses_orm_list = await run_in_threadpool(crud.get_clearance_statuses_by_student_id, db, student_orm.student_id)
clearance_items_models: List[models.ClearanceStatusItem] = []
overall_status_val = models.OverallClearanceStatusEnum.COMPLETED
if not statuses_orm_list:
overall_status_val = models.OverallClearanceStatusEnum.PENDING
for status_orm in statuses_orm_list:
item = models.ClearanceStatusItem(
department=status_orm.department,
status=status_orm.status,
remarks=status_orm.remarks,
updated_at=status_orm.updated_at
)
clearance_items_models.append(item)
if item.status != models.ClearanceStatusEnum.COMPLETED:
overall_status_val = models.OverallClearanceStatusEnum.PENDING
if not statuses_orm_list and overall_status_val == models.OverallClearanceStatusEnum.COMPLETED:
overall_status_val = models.OverallClearanceStatusEnum.PENDING
return models.ClearanceDetail(
student_id=student_orm.student_id,
name=student_orm.name,
department=student_orm.department,
clearance_items=clearance_items_models,
overall_status=overall_status_val
)
|