from apiflask import APIBlueprint from flask import abort from ...students.models import YearGroup from ...dependencies import db from ...base.utils import paginate_models from ..schemas import YearGroupQueryStudentSchema, YearGroupStudentPaginationSchema from ..models import Student bp = APIBlueprint("year_group", __name__, url_prefix="/year-group") @bp.get('/') @bp.input(YearGroupQueryStudentSchema, location='query') @bp.output(YearGroupStudentPaginationSchema) def list_of_year_groups(query: dict) -> dict: index = query.get('index') st = Student.query.filter(Student.index == index).first() if st is None: abort(404, "Not found student!") #################################### page = query.get('page') per_page = query.get('per_page') year_group_query = YearGroup.query.join(YearGroup.students). \ filter(Student.index == st.index).order_by(db.desc(YearGroup.created_at)) data = paginate_models(page, year_group_query, per_page) return { "year_groups": data['items'], "max_pages": data['max_pages'] }