# from xml import etree from lxml import etree from .models_constants import QuanLyHocTap, QuanLyThiB1 from odoo import models, fields, api class CenhomesQuanLyHocTap(models.Model): _name = "cenhomes.quan_ly_hoc_tap" _description = "Quản Lý Học Tập" hoc_vien_id = fields.Many2one( comodel_name="cenhomes.hoc_vien", string="Học viên", ondelete="cascade", ) mshv = fields.Char( string="Mã Số Học Viên", related="hoc_vien_id.mshv", store=True, readonly=True, ) ngay_ban_giao = fields.Date(string="Ngày Bàn Giao Học Viên") ngay_nhap_hoc = fields.Date(string="Ngày Nhập Học") khoa = fields.Char(string="Khóa") ngay_kiem_tra_dau_vao = fields.Date(string="Ngày Kiểm Tra Đầu Vào") ket_qua_dau_vao = fields.Char(string="Kết Quả Kiểm Tra Đầu Vào") lop_a1 = fields.Char(string="Lớp A1") start_date_a1 = fields.Date(string="Start Date A1") lop_a2 = fields.Char(string="Lớp A2") start_date_a2 = fields.Date(string="Start Date A2") lop_b1 = fields.Char(string="Lớp B1") start_date_b1 = fields.Date(string="Start Date B1") lop_on_b1 = fields.Char(string="Lớp Ôn B1") start_date_on_b1 = fields.Date(string="Start Date Ôn B1") lop_on_duy_tri_b1 = fields.Char(string="Lớp Ôn Duy Trì B1") start_date_on_duy_tri_b1 = fields.Date(string="Start Date Ôn Duy Trì B1") lop_phu_dao = fields.Char(string="Lớp Phụ Đạo (Nếu Có)") start_date_phu_dao = fields.Date(string="Start Date Phụ Đạo (Nếu Có)") trang_thai_hoc_tap = fields.Selection( selection=QuanLyHocTap._trang_thai_hoc_tap_list, string="Trạng Thái Học Tập", ) trang_thai_doi_ngoai = fields.Selection( selection=QuanLyHocTap._trang_thai_doi_ngoai_list, string="Trạng Thái Đối Ngoại", ) trang_thai_thu_tuc = fields.Char(string="Trạng Thái Thủ Tục") trang_thai_chuyen_tt = fields.Selection( selection=QuanLyHocTap._trang_thai_chuyen_trung_tam_list, string="Chuyển Trung Tâm", ) nguyen_vong_1 = fields.Char(string="Nguyện Vọng 1") nguyen_vong_2 = fields.Char(string="Nguyện Vọng 2") class KiemTraBaiCu(models.Model): _name = "cenhomes.kiem_tra_bai_cu" _description = "Kiểm Tra Bài Cũ" hoc_vien_id = fields.Many2one( comodel_name="cenhomes.hoc_vien", string="Học viên", ondelete="cascade", ) mshv = fields.Char( string="Mã Số Học Viên", related="hoc_vien_id.mshv", store=True, readonly=True, ) thoi_khoa_bieu_id = fields.Many2one( comodel_name="cenhomes.thoi_khoa_bieu", string="Thời Khóa Biểu", ondelete="cascade", ) diem_bai_tap_ve_nha = fields.Float(string="Điểm Bài Tập Về Nhà") diem_kiem_tra_mieng = fields.Float(string="Điểm Kiểm Tra Miệng", default=None) is_khong_cham = fields.Boolean(string="Không Chấm", default=False) @api.onchange("is_khong_cham") def _onchange_is_khong_cham(self): """Nếu chọn không chấm, thì đặt điểm kiểm tra miệng là None""" if self.is_khong_cham: self.diem_kiem_tra_mieng = False class CenhomesBaiThi(models.Model): _name = "cenhomes.bai_thi" _description = "Bài thi" name = fields.Char(string="Tên", required=True) giao_vien_coi_thi_id = fields.Char(string="Giáo viên coi thi") giao_vien_cham_thi_id = fields.Char(string="Giáo viên chấm thi") ngay_thi = fields.Date(string="Ngày thi") loai_thi = fields.Selection( string="Loại thi", selection=QuanLyHocTap._loai_bai_thi_list, required=True, ) loai_giao_trinh = fields.Char(string="Loại giáo trình") noi_dung_bai_kiem_tra = fields.Text(string="Nội dung bài kiểm tra") thoi_luong_lam_bai = fields.Integer(string="Thời lượng làm bài (phút)") ma_de_thi = fields.Char(string="Mã đề thi") def write(self, vals): return super().write(vals) class CenhomesKetQuaThi(models.Model): _name = "cenhomes.ket_qua_thi" _description = "Kết quả thi" hoc_vien_id = fields.Many2one( comodel_name="cenhomes.hoc_vien", string="Học viên", ondelete="cascade", ) mshv = fields.Char( string="Mã Số Học Viên", related="hoc_vien_id.mshv", store=True, readonly=True, ) bai_thi_id = fields.Many2one( comodel_name="cenhomes.bai_thi", string="Bài thi", ondelete="cascade", ) thi_nghe = fields.Char(string="Thi nghe") thi_noi = fields.Char(string="Thi nói") thi_doc = fields.Char(string="Thi đọc") thi_viet = fields.Char(string="Thi viết") def write(self, vals): return super().write(vals) class CenhomesQuanLyThiB1(models.Model): _name = "cenhomes.quan_ly_thi_b1" _description = "Quản Lý Thi B1" hoc_vien_id = fields.Many2one( comodel_name="cenhomes.hoc_vien", string="Học viên", ondelete="cascade", required=True, ) mshv = fields.Char( string="Mã Số Học Viên", related="hoc_vien_id.mshv", store=True, readonly=True, ) giao_vu_id = fields.Char( string="Giáo vụ", ) don_vi_to_chuc = fields.Char(string="Đơn Vị Tổ Chức") loai_chung_chi = fields.Char(string="Loại Chứng Chỉ") dia_chi_to_chuc_thi = fields.Char(string="Địa Chỉ Tổ Chức Thi") ngay_dang_ky = fields.Date(string="Ngày Đăng Ký") ngay_thi_du_kien = fields.Date(string="Ngày Thi Dự Kiến") ket_qua_goethe_osd_nghe = fields.Float(string="Kết Quả Thi Goethe/OSD Nghe") ket_qua_goethe_osd_viet = fields.Float(string="Kết Quả Thi Goethe/OSD Viết") ket_qua_goethe_osd_doc = fields.Float(string="Kết Quả Thi Goethe/OSD Đọc") ket_qua_goethe_osd_noi = fields.Float(string="Kết Quả Thi Goethe/OSD Nói") ket_qua_telc_nghe_doc_viet_ngu_phap = fields.Float( string="Kết Quả Thi TELC Nghe - Đọc - Viết - Ngữ Pháp" ) ket_qua_telc_noi = fields.Float(string="Kết Quả Thi TELC Nói") diem_tong_telc = fields.Float(string="Điểm Tổng TELC") ket_qua_ecl_nghe = fields.Float(string="Kết Quả Thi ECL Nghe") ket_qua_ecl_viet = fields.Float(string="Kết Quả Thi ECL Viết") ket_qua_ecl_doc = fields.Float(string="Kết Quả Thi ECL Đọc") ket_qua_ecl_noi = fields.Float(string="Kết Quả Thi ECL Nói") diem_tong_ecl = fields.Float(string="Điểm Tổng ECL") ket_qua_goethe_osd = fields.Selection( selection=QuanLyThiB1._ket_qua_goethe_osd_list, string="Kết Quả Thi Goethe/OSD", ) ket_qua_telc = fields.Selection( selection=QuanLyThiB1._ket_qua_telc_list, string="Kết Quả Thi TELC", ) ket_qua_ecl = fields.Selection( selection=QuanLyThiB1._ket_qua_ecl_list, string="Kết Quả Thi ECL", ) ngay_lay_bang_du_kien = fields.Date(string="Ngày Lấy Bằng Dự Kiến") class QuyChuanDaoTao(models.Model): _name = "cenhomes.quy_chuan_dao_tao" _description = "Quy Chuẩn Đào Tạo" trinh_do = fields.Selection( selection=QuanLyHocTap._trinh_do_dao_tao_list, string="Trình Độ", required=True ) yeu_cau_dau_vao = fields.Text(string="Yêu Cầu Đầu Vào") thoi_gian_dao_tao = fields.Integer(string="Thời Gian Đào Tạo (giờ)") so_tiet_hoc = fields.Integer(string="Số Tiết Học") so_tiet_giao_vien_duc = fields.Integer(string="Số Tiết Với Giáo Viên Đức") so_tiet_luyen_nghe_noi = fields.Integer(string="Số Tiết Luyện Nghe Nói") so_tiet_luyen_cv_thu = fields.Integer(string="Số Tiết Luyện CV & Thư Động Lực") so_tiet_luyen_phong_van = fields.Integer(string="Số Tiết Luyện Phỏng Vấn") so_tiet_tu_hoc = fields.Integer(string="Số Tiết Tự Học") chuan_dau_ra = fields.Text(string="Chuẩn Đầu Ra")