def join_teacher(student_id): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 ma_gvhd = request_data.get("magv") if not ma_gvhd: return jsonify({ "message": "Không thể tìm thấy thông tin liên kết! Vui lòng kiểm tra lại mã giáo viên", "code": 412 }), 412 soLuong = TeacherModel.get_so_luong_by_ma(ma_gvhd) if int(soLuong) > 26: return jsonify({ "message": "Không thể gửi yêu cầu vì giáo viên đã đủ lớp!", "code": 413 }), 413 StudentModel.update_request_join_by_student(student_id=student_id, ma_gvhd=ma_gvhd) TeacherModel.update_so_luong_by_magvhd(ma_gv=ma_gvhd) return jsonify({"message": "Đã gửi yêu cầu!", "code": 200}), 200
def get_by_project_teacher(teacher_id): result = list() id_std = request.args.get("id_std") try: ma_gv = TeacherModel.get_magvhd_by_id(teacher_id=teacher_id) projects = ProjectModel.get_project_by_teacher(ma_gv) cap = StudentModel.get_level_student_id(id_std) except Exception as e: print(e) return jsonify({ "message": "Có lỗi phát sinh trong server!", "code": 500 }), 500 for project in projects: check = StudentModel.get_data_by_project(project.id) if id_std and str(project.Cap) != str(cap): continue result.append({ "id": project.id, "Ten": project.Ten, "Mota": project.MoTa, "TrangThai": project.TrangThai if not check else "Đã chọn", "GhiChu": project.GhiChu, "Cap": project.Cap }) return jsonify({ "message": "request thành công!", "data": result, "code": 200 }), 200
def send_contact_bean(): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 ma_sv = request_data.get("masv") noi_dung = request_data.get("noidung") tra_ma_sv = StudentModel.get_student_by_ma(masv=ma_sv) if not tra_ma_sv: return jsonify({ "message": "Mã sinh viên không hợp lệ! Vui lòng kiểm tra lại", "code": 412 }), 412 NguoiNhanGhiChu = TeacherModel.get_id_dean() comment_id = CommentModel.insert_comment( NguoiTaoGhiChu=tra_ma_sv, NguoiNhanGhiChu=NguoiNhanGhiChu, LoaiGhiChu="sinh_vien_chua_nhan_do_an", NoiDung=noi_dung, ThoiGianTao=get_current_time()) return jsonify({ "message": "Tạo ghi chú thành công!", "code": 200 }), 200
def get_all_project(): result = list() try: projects = ProjectModel.get_all_project() except Exception as e: print(e) return jsonify({ "message": "Có lỗi phát sinh trong server!", "code": 500 }), 500 for project in projects: check = StudentModel.get_data_by_project(project.id) result.append({ "id": project.id, "Ten": project.Ten, "Mota": project.MoTa, "TrangThai": project.TrangThai if not check else "Đã chọn", "GhiChu": project.GhiChu, "Cap": project.Cap }) return jsonify({ "message": "request thành công!", "data": result, "code": 200 }), 200
def get_all_teacher_not_enough_student(): soluong = request.args.get("soluong", SoLuongSV.GVTiepNhan) id_std = request.args.get("id_std") try: cap = StudentModel.get_level_student_id(student_id=id_std) all_code_teachers = list() all_project_teachers = ProjectModel.get_project_by_cap(cap) for project in all_project_teachers: all_code_teachers.append(project.ChiDinh) teachers = TeacherModel.get_teacher_by_lt_soluong_tids( soluong=soluong, codes=all_code_teachers ) except Exception as e: return jsonify({"messgae": str(e), "code": 500}), 500 result = list() for teacher in teachers: data_teacher = { "ten": teacher.Ten, "soluong": teacher.SoLuong, "magv": teacher.MaGV, "email": teacher.Email } result.append(data_teacher) return jsonify({"messgae": "Lấy thông tin thành công!", "code": 200, "data": result}), 200
def student_not_teacher(): result = list() students = StudentModel.find_student_not_teacher() for student in students: detai = "" if student.IDDeTai: project = ProjectModel.get_project_by_id( project_id=int(student.IDDeTai)) if project: detai = project.Ten data = { "id": student.id, "masv": student.MaSV, "ten": student.Ten, "lop": "12312312", "hom_thu": "", "trang_thai": student.TrangThai if not student.IDDeTai else "DaChon", "gvhd": student.MaGVHD, "detai": detai, "cap": student.Cap } result.append(data) return jsonify({ "message": "Tạo ghi chú thành công!", "data": result, "code": 200 }), 200
def save_student(students): all_insert_data = list() for data in students: all_insert_data.append({ "Ten": data.get("ten"), "MaSV": data.get("masv"), "SDT": data.get("sdt", ""), "Email": data.get("email", ""), "IDLop": data.get("idlop", ""), "MaGVHD": "", "IDDeTai": "", "TrangThai": "TaoMoi", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() }) if all_insert_data: StudentModel.insert_many_student(all_insert_data)
def login(): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 username = request_data.get("username") password = request_data.get("password") password_md5 = generate_md5_by_str(password) user_data = UserModel.find_username_password(username=username, password=password_md5) if not user_data: return jsonify({ "message": "Không tìm thấy thông tin tài khoản!", "code": 413 }), 413 ma = None if user_data.Quyen == "giaovien": ma = TeacherModel.get_magvhd_by_id(int(user_data.LienKet)) data = { "username": username, "permission": user_data.Quyen, "lienket": user_data.LienKet, "iddetai": "", "id_gvhd": "", "ma": ma } if user_data.Quyen == "sinhvien": student_data = StudentModel.get_student_by_id( student_id=user_data.LienKet) if student_data: data["ma"] = student_data.MaSV if student_data.IDDeTai: data["iddetai"] = student_data.IDDeTai if student_data.MaGVHD: teacher_id = TeacherModel.get_id_by_ma(student_data.MaGVHD) if teacher_id: data["id_gvhd"] = teacher_id check = int(user_data.LienKet) i = check // 3 if check >= 6 else check if check < 3 else check - 3 if int(i) == 0: data["start_time_do_an"] = "01/05/2021" if int(i) == 1: data["start_time_do_an"] = "19/03/2021" if int(i) == 2: data["start_time_do_an"] = "25/12/2020" return jsonify({ "message": "Đăng nhập thành công!", "data": data, "code": 200 }), 200
def update_request_select_project(student_id): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 project_id = request_data.get("project_id") if not project_id: return jsonify({ "message": "Không thể tìm thấy thông tin liên kết!", "code": 412 }), 412 StudentModel.update_request_join_project(student_id=student_id, project_id=project_id) return jsonify({"message": "Đã gửi yêu cầu!", "code": 200}), 200
def edit_project_by_teacher(teacher_id): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({"message": "Không thể lấy dữ liệu!", "code": 412}), 412 ma_sv = request_data.get("ma_sv") chuc_nang = request_data.get("chuc_nang") if not ma_sv or not chuc_nang: return jsonify({ "message": "Không thể thực hiện chức năng này!. Vui lòng điền đầy đủ thông tin.", "code": 412 }), 412 if chuc_nang == "sua_de_tai": project_id = request_data.get("id_de_tai") if not project_id: return jsonify({ "message": "Không thể thực hiện chức năng này!. Vui lòng điền đầy đủ thông tin về đề tài", "code": 412 }), 412 ma_gvhd = TeacherModel.get_magvhd_by_id(teacher_id) if not ma_gvhd: return jsonify({ "message": "Không tìm thấy mã giáo viên hướng dẫn!", "code": 412 }), 412 StudentModel.update_project_by_teacher( masv=ma_sv, project_id=project_id ) return jsonify({"message": "Đã sửa đề tài thành công!", "code": 200}), 200 if chuc_nang == "bo_de_tai": ma_gvhd = TeacherModel.get_magvhd_by_id(teacher_id) if not ma_gvhd: return jsonify({ "message": "Không tìm thấy mã giáo viên hướng dẫn!", "code": 412 }), 412 StudentModel.cancel_project_by_teacher( masv=ma_sv ) return jsonify({"message": "Đã bỏ đề tài thành công!", "code": 200}), 200 return jsonify({"message": "Chức năng không tồn tại vui lòng kiểm tra lại!", "code": 412}), 412
def join_teacher(student_id): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 ma_gvhd = request_data.get("magv") if not ma_gvhd: return jsonify({ "message": "Không thể tìm thấy thông tin liên kết! Vui lòng kiểm tra lại mã giáo viên", "code": 412 }), 412 StudentModel.update_request_join_by_student(student_id=student_id, ma_gvhd=ma_gvhd) return jsonify({"message": "Đã gửi yêu cầu!", "code": 200}), 200
def report(): students = StudentModel.count_student() student_not_do_project = StudentModel.count_student_not_do_project() teachers = TeacherModel.count_teacher_by_where(TeacherModel.ChucVu == "GiaoVien") all_teachers = list() teachers_count_by_sl = TeacherModel.get_teacher_by_soluong(SoLuongSV.GVTiepNhan) for teacher in teachers_count_by_sl: all_teachers.append({ "ten": teacher.Ten, "soluong": teacher.SoLuong, "magv": teacher.MaGV, "email": teacher.Email }) result = { "count_student_do_project": students, "count_student_not_do_project": student_not_do_project, "count_teacher": teachers, "teacher_not_enough_student": all_teachers, } return jsonify({"message": "Lấy dữ liệu thành công!", "data": result, "code": 200}), 200
def update_information_report(week): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 ma_sv = request_data.get("ma_sv") ghi_chu = request_data.get("ghi_chu") diem = request_data.get("diem") if not diem or not ma_sv: return jsonify({ "message": "Không tìm thấy mã sinh viên để cập nhật điểm!", "code": 412 }), 412 id_sv = StudentModel.get_student_by_ma(ma_sv) if not id_sv: return jsonify({ "message": "Không tìm thấy mã sinh viên để cập nhật điểm!", "code": 412 }), 412 if week not in ["8", "16"]: ReportWeeklyModel.update_point_report(week=week, id_sv=id_sv, diem=diem, ghi_chu=ghi_chu) else: lan = 1 if week == "16": lan = 2 reports = ReportModel.get_report_id_sinh_vien(id_sinh_vien=id_sv) if not reports: data_insert_report = { "IDSinhVien": id_sv, "IDGVHD": "", "DiemLan1": "", "DiemLan2": "", "DieuKienBaoVe": "", "GhiChu": ghi_chu, "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } report_id = ReportModel.insert_one(data_insert_report) ReportModel.update_point_report(id_sinh_vien=id_sv, point=diem, lan=lan, ghi_chu=ghi_chu) return jsonify({ "message": "Cập nhật thông tin thành công!", "code": 200 }), 200
def get_report_by_week(teacher_id, week): try: args = request.args except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 results = list() report_weekly = ReportWeeklyModel.get_report_by_week(week=week) for report_week in report_weekly: ma_gv = TeacherModel.get_magvhd_by_id(teacher_id=teacher_id) sinhvien = StudentModel.get_student_by_id(report_week.IDSinhVien) if not ma_gv or sinhvien.MaGVHD != ma_gv: continue data = { "tuan": week, "masv": sinhvien.MaSV, "ten": sinhvien.Ten, "hinhanh": Topic.HOST + "/download/image/" + str(report_week.id) + "/" + str(report_week.IDSinhVien) if report_week.HinhAnh else "", "file": Topic.HOST + "/download/file/" + str(report_week.id) + "/" + str(report_week.IDSinhVien) if report_week.File else "", # "ghichu": report_week.GhiChu, "diem": report_week.Diem } if week in ["8", "16"]: try: points = ReportModel.get_report_id_sinh_vien( report_week.IDSinhVien) except: points = None point = "" if points: if week == "8": point = points.DiemLan1 if week == "16": point = points.DiemLan2 data["diem"] = point if data.get("diem") and float(data.get("diem")) > 5: data["duyet"] = True results.append(data) return jsonify({ "message": "request thành công!", "data": results, "code": 200 }), 200
def get_report_by_week(week): results = list() report_weekly = ReportWeeklyModel.get_report_by_week(week=week) for report_week in report_weekly: sinhvien = StudentModel.get_student_by_id(report_week.IDSinhVien) data = { "tuan": week, "masv": sinhvien.MaSV, "ten": sinhvien.Ten, "hinhanh": Topic.HOST + "/download/image/" + str(report_week.id) + "/" + str(report_week.IDSinhVien) if report_week.HinhAnh else "", "file": Topic.HOST + "/download/file/" + str(report_week.id) + "/" + str(report_week.IDSinhVien) if report_week.File else "", "ghichu": report_week.GhiChu, } results.append(data) return jsonify({"message": "request thành công!", "data": results, "code": 200}), 200
def login(): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 username = request_data.get("username") password = request_data.get("password") password_md5 = generate_md5_by_str(password) user_data = UserModel.find_username_password(username=username, password=password_md5) if not user_data: return jsonify({ "message": "Không tìm thấy thông tin tài khoản!", "code": 413 }), 413 data = { "username": username, "permission": user_data.Quyen, "lienket": user_data.LienKet, "iddetai": "", "id_gvhd": "", } if user_data.Quyen == "sinhvien": student_data = StudentModel.get_student_by_id( student_id=user_data.LienKet) if student_data: if student_data.IDDeTai: data["iddetai"] = student_data.IDDeTai if student_data.MaGVHD: teacher_id = TeacherModel.get_id_by_ma(student_data.MaGVHD) if teacher_id: data["id_gvhd"] = teacher_id return jsonify({ "message": "Đăng nhập thành công!", "data": data, "code": 200 }), 200
def browse_report_weekly(teacher_id, masv): id_sinh_vien = StudentModel.get_student_by_ma(masv=masv) if not id_sinh_vien: return jsonify({ "message": "Không tìm thấy thông tin sinh viên!", "code": 412 }), 412 reports = ReportWeeklyModel.get_report_by_student_id( student_id=id_sinh_vien) if not reports: return jsonify({ "message": "Không tìm thấy thông tin báo cáo sinh viên!", "code": 412 }), 412 all_weekly = list() for report in reports: point = None if report.Tuan in ["8", "16"]: try: points = ReportModel.get_report_id_sinh_vien( id_sinh_vien=id_sinh_vien) except: points = None if points: if report.Tuan == "8": point = points.DiemLan1 if report.Tuan == "16": point = points.DiemLan2 else: point = report.Diem if not point: all_weekly.append(report.Tuan) for i in range(1, 21): if i not in all_weekly: all_weekly.append(i) return jsonify({ "message": "lấy thông tin thành công!", "data": all_weekly, "code": 200 }), 200
def get_list_student_by_teacher(teacher_id): result = list() try: ma_gvhd = TeacherModel.get_magvhd_by_id(teacher_id) except: return jsonify({"messgae": "Không tìm thấy mã giáo viên!", "code": 413}), 413 students = StudentModel.get_student_by_magvhd(magvhd=ma_gvhd) for student in students: project = None if student.IDDeTai: project = ProjectModel.get_project_by_id(student.IDDeTai) data = { "masv": student.MaSV, "ten": student.Ten, "id_sv": student.id, "detai": project.Ten if project else "", "ghichu": project.GhiChu if project else "", "cap": student.Cap } result.append(data) return jsonify({"messgae": "request thành công!", "data": result, "code": 200}), 200
def get_list_student(): result = list() param = request.args ten = param.get("ten") ma_sv = param.get("masv") lop = param.get("lop") trang_thai = param.get("trang_thai") gvhd = param.get("gvhd") page = param.get("page", 1) per_page = param.get("per_page", 10) page = 0 paging = { "page": page, "per_page": per_page, } students = StudentModel.get_all_student() for student in students: data = { "masv": student.MaSV, "ten": student.Ten, "lop": "12312312", "hom_thu": "", "trang_thai": student.TrangThai, "gvhd": student.MaGVHD, "detai": "De tai" } result.append(data) return jsonify({ "message": "Tạo ghi chú thành công!", "data": result, "paging": paging, "code": 200 }), 200
def register(): try: request_data = request.data request_data = json.loads(request_data) except: return jsonify({ "message": "Không thể lấy dữ liệu!", "code": 412 }), 412 username = request_data.get("username") password = request_data.get("password") permission = request_data.get("permission", "sinhvien") password_md5 = generate_md5_by_str(password) check_user_name = UserModel.find_username(username=username) if check_user_name: return jsonify({ "message": f"Tài khoản {username} đã tồn tại!", "code": 413 }), 413 lienket = None if permission == "sinhvien": student_data = { "Ten": request_data.get("ten"), "MaSV": request_data.get("masv"), "SDT": request_data.get("sdt", ""), "Email": request_data.get("email", ""), "IDLop": request_data.get("idlop", ""), "MaGVHD": "", "IDDeTai": "", "TrangThai": "TaoMoi", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } lienket = StudentModel.insert_one_student(data=student_data) if permission == "giaovien": teacher_data = { "Ten": request_data.get("ten"), "SoLuong": 0, "MaGV": request_data.get("magv"), "SDT": request_data.get("sdt"), "Email": request_data.get("email"), "ChucVu": request_data.get("chucvu") if request_data.get("chucvu") else "GiaoVien", "TrangThai": "", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } lienket = TeacherModel.insert_many_teacher(teacher_data) user_data = { "TaiKhoan": username, "MatKhau": str(password_md5), "Quyen": permission, "LienKet": lienket, "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } user_id = UserModel.insert_user(data_insert=user_data) if not user_id: return jsonify({ "message": "Tạo mới thông tin tài khoản thành công!", "code": 413 }), 413 data = {"username": username, "permission": permission} return jsonify({ "message": "Tạo mới tài khoản thành công!", "data": data, "code": 200 }), 200
def get_list_student(): result = list() param = request.args ten = param.get("ten") ma_sv = param.get("masv") lop = param.get("lop") trang_thai = param.get("trang_thai") gvhd = param.get("gvhd") page = param.get("page", 1) per_page = param.get("per_page", 10) where = "" if ten: if not where: where = "( StudentModel.Ten.contains(ten) )" else: where += " & ( StudentModel.Ten.contains(ten) )" if ma_sv: if not where: where = "( StudentModel.MaSV.contains(ma_sv) )" else: where += " & ( StudentModel.MaSV.contains(ma_sv) )" if gvhd: if not where: where = "( StudentModel.MaGVHD.contains(gvhd) )" else: where += " & ( StudentModel.MaGVHD.contains(gvhd) )" result = list() paging = dict() if where: where = eval(where) tong = StudentModel.count_student_by_where(where) if tong == 0: return jsonify({ "messgae": "request thành công!", "data": result, "code": 200 }), 200 if page == -1: students = StudentModel.get_all_student(where=where, is_full=True) else: paging = StudentController.generate_paging(page=page, per_page=per_page, sum_page=tong) skip = per_page * (page - 1) limit = per_page students = StudentModel.get_all_student(where=where, skip=skip, limit=limit) for student in students: detai = "" if student.IDDeTai: project = ProjectModel.get_project_by_id( project_id=int(student.IDDeTai)) if project: detai = project.Ten data = { "id": student.id, "masv": student.MaSV, "ten": student.Ten, "lop": "12312312", "hom_thu": "", "trang_thai": student.TrangThai if not student.IDDeTai else "DaChon", "gvhd": student.MaGVHD, "detai": detai, "cap": student.Cap } result.append(data) return jsonify({ "message": "Tạo ghi chú thành công!", "data": result, "paging": paging, "code": 200 }), 200
def create_data(n=10): all_data = list() for i in range(1, n): email = f"sinhvien{i}[email protected]" password = generate_md5_by_str(default_pass) student_data = { "Ten": "Nguyen Van A " + str(i), "MaSV": "Ma101152" + str(i), "SDT": "03133312323" + str(i), "Email": email, "IDLop": 1, "MaGVHD": "", "IDDeTai": "", "Cap": random.randrange(1, 3, 1), "TrangThai": "TaoMoi", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } student_id = StudentModel.insert_one_student(student_data) user_data = { "TaiKhoan": email, "MatKhau": str(password), "Quyen": "sinhvien", "LienKet": student_id, "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } user_id = UserModel.insert_user(data_insert=user_data) for i in range(1, n): email = f"giaovien{i}[email protected]" password = generate_md5_by_str(default_pass) teacher_data = { "Ten": "Le Van A" + str(i), "SoLuong": 0, "MaGV": f"Gv12983192{i}", "SDT": f"19831321312{i}", "Email": email, "ChucVu": "GiaoVien", "TrangThai": "", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } teacher_id = TeacherModel.insert_one_teacher(teacher_data) user_data = { "TaiKhoan": email, "MatKhau": str(password), "Quyen": "giaovien", "LienKet": teacher_id, "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } user_id = UserModel.insert_user(data_insert=user_data) email = f"*****@*****.**" password = generate_md5_by_str(default_pass) teacher_data = { "Ten": "Truong khoa", "SoLuong": 0, "MaGV": "Tk1231231", "SDT": "192831892313", "Email": email, "ChucVu": "TruongKhoa", "TrangThai": "", "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } teacher_id = TeacherModel.insert_one_teacher(teacher_data) user_data = { "TaiKhoan": email, "MatKhau": str(password), "Quyen": "truongkhoa", "LienKet": teacher_id, "ThoiGianTao": get_current_time(), "ThoiGianCapNhat": get_current_time() } user_id = UserModel.insert_user(data_insert=user_data)