Spaces:
Runtime error
Runtime error
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 | |
) | |