Example #1
0
    def enroll_create():
        # 학번으로 학생 테이블 pk 가져오기
        student_no = request.form.get("student_no")
        student = Base.classes.student
        student_id = db_session.query(student).filter_by(
            student_no=student_no).one().id

        # 과목 코드와 학기 정보로 최신 개설강좌 pk 가져오기
        subject_code = request.form.get("subject_code")
        subject = Base.classes.subject
        subject_id = db_session.query(subject).filter_by(
            code=subject_code).one().id
        semester = request.form.get("semester")
        lecture = Base.classes.lecture
        lecture_id = db_session.query(lecture).filter_by(semester=semester)\
                                              .filter_by(subject_id=subject_id).first().id
        grade = request.form.get("grade", None)

        # enroll 생성 및 저장
        enroll = Base.classes.enroll(student_id=student_id,
                                     lecture_id=lecture_id,
                                     grade=grade)
        db_session.add(enroll)
        db_session.commit()
        return redirect(url_for("enroll_list"))
Example #2
0
 def show_students():
     model = Base.classes.student
     # joined load 는 left outer join 이 기본. (타겟 테이블 조회 시 쿼리 단일화 용도에 적절)
     # inner join 이 필요한 경우 joined load 의 inner join 옵션 지정
     students = db_session.query(model).options(
         joinedload(model.school), joinedload(model.department)).all()
     return render_template('students.html', students=students, urls=urls)
Example #3
0
 def show_enrolls():
     model = Base.classes.enroll
     lecture = Base.classes.lecture
     enrolls = db_session.query(model).order_by(model.id).options(
         joinedload(model.student),
         joinedload(model.lecture).options(joinedload(
             lecture.subject))).all()
     return render_template('enrolls.html', enrolls=enrolls, urls=urls)
Example #4
0
 def show_lectures():
     model = Base.classes.lecture
     subject = Base.classes.subject
     room = Base.classes.room
     # 2차 relation 참조 필요합 경우 joined load 체이닝으로 ORM 쿼리 통합
     lectures = db_session.query(model).options(
         joinedload(model.subject).options(joinedload(subject.department)),
         joinedload(model.room).options(joinedload(room.building)),
         joinedload(model.professor)).all()
     return render_template('lectures.html', lectures=lectures, urls=urls)
Example #5
0
 def enroll_form():
     model = Base.classes.enroll
     db_session.query(model)
     return render_template('enroll_form.html', urls=urls)
Example #6
0
 def enroll_delete(pk):
     model = Base.classes.enroll
     db_session.query(model).filter_by(id=pk).delete()
     db_session.commit()
     return redirect(url_for("enroll_list"))
Example #7
0
 def enroll_update(pk):
     grade = request.form.get("grade")
     model = Base.classes.enroll
     db_session.query(model).filter(model.id == pk).update({"grade": grade})
     db_session.commit()
     return redirect(url_for("enroll_list"))