Spaces:
Build error
Build error
from typing import Any, List | |
from cruds.base import CRUDBase | |
from cruds.user import crud_user | |
from models import ClassSession | |
from models import User | |
from schemas import ClassSessionCreate, ClassSessionUpdate, AttendanceUpdate | |
from sqlalchemy.orm import Session | |
from core.config import settings | |
class CRUDClassSession(CRUDBase[ClassSession, ClassSessionCreate, ClassSessionUpdate]): | |
def create(self, db: Session, *, obj_in: ClassSessionCreate) -> Any: | |
if obj_in.instructor: | |
instructor = [crud_user.get(db=db, id=id) for id in obj_in.instructor] | |
else: | |
instructor = [] | |
db_obj = ClassSession( | |
start_time=obj_in.start_time, # noqa | |
end_time=obj_in.end_time, # noqa | |
instructor=instructor, # noqa | |
course_id=obj_in.course_id, # noqa | |
description=obj_in.description, # noqa | |
group_id=obj_in.group_id, | |
) | |
db.add(db_obj) | |
db.commit() | |
db.refresh(db_obj) | |
return db_obj | |
def attendance_update( | |
self, db: Session, *, db_obj: ClassSession, obj_in: AttendanceUpdate | |
) -> Any: | |
students = [crud_user.get_by_id(db=db, id=item) for item in obj_in.attendant] | |
db_obj.attendant = students | |
db.add(db_obj) | |
db.commit() | |
db.refresh(db_obj) | |
return db_obj | |
def get_user_class_session( | |
self, db: Session, user: User, id: int = None | |
) -> List[ClassSession]: | |
if user.user_type == settings.UserType.STUDENT.value: | |
class_sessions = db.query(self.model) | |
if id: | |
class_sessions = class_sessions.filter(ClassSession.id == id) | |
class_sessions = class_sessions.filter( | |
ClassSession.group_id == user.group_id | |
) | |
if id: | |
return class_sessions.first() | |
else: | |
return class_sessions.all() | |
else: # if user.user_type == settings.UserType.TEACHER.value: | |
# TODO Fix ^^ | |
class_sessions = db.query(self.model).filter( | |
ClassSession.instructor.contains(user) | |
) | |
if not id: | |
return class_sessions.all() | |
else: | |
return class_sessions.filter(ClassSession.id == id).first() | |
return class_sessions | |
crud_class_session = CRUDClassSession(ClassSession) | |