from odoo import models, fields from .models_constants import QuanLyLopHoc class CenhomesLopHoc(models.Model): _name = "cenhomes.lop_hoc" _description = "Lớp Học" name = fields.Char(string="Tên", required=True) giao_vien_chu_nhiem_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.giao_vien_chu_nhiem", string="Giáo viên chủ nhiệm", ) hoc_vien_ids = fields.Many2many( comodel_name="cenhomes.hoc_vien", relation="cenhomes_hoc_vien_lop_hoc_rel", column1="lop_hoc_id", column2="hoc_vien_id", string="Học viên", ) trinh_do = fields.Selection( string="Trình độ", selection=QuanLyLopHoc._trinh_do_list ) loai_lop = fields.Selection( string="Loại lớp", selection=QuanLyLopHoc._loai_lop_list ) thoi_khoa_bieu_ids = fields.One2many( comodel_name="cenhomes.thoi_khoa_bieu", inverse_name="lop_hoc_id", string="Thời khóa biểu", ) kap_hien_tai = fields.Integer(string="KAP học hiện tại") midterm_a1_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (giữa kỳ) A1", ) final_a1_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (cuối kỳ) A1", ) midterm_a2_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (giữa kỳ) A2", ) final_a2_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (cuối kỳ) A2", ) midterm_b1_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (giữa kỳ) B1", ) final_b1_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="ID thi (cuối kỳ) B1", ) trang_thai_lop = fields.Selection( string="Trạng thái lớp", selection=QuanLyLopHoc._trang_thai_lop_list, default="mo", ) def name_get(self): return [(record.id, record.name) for record in self] def write(self, vals): return super().write(vals) class CenhomesLopOn(models.Model): _name = "cenhomes.lop_on" _description = "Lớp Ôn" name = fields.Char(string="Tên", required=True) hoc_vien_ids = fields.Many2many("cenhomes.hoc_vien", string="Học viên(s)") giao_vien_chu_nhiem_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.giao_vien_chu_nhiem", string="Giáo viên chủ nhiệm", ) loai_chung_chi_thi = fields.Selection( string="Loại chứng chỉ thi", selection=QuanLyLopHoc._loai_chung_chi_list, required=True, ) thoi_khoa_bieu_ids = fields.One2many( comodel_name="cenhomes.thoi_khoa_bieu", inverse_name="lop_on_id", string="Thời khóa biểu", ) loai_lop_on = fields.Selection( string="Loại lớp ôn", selection=QuanLyLopHoc._loai_lop_on_list, required=True, ) bai_thi_tieu_chuan_1_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="Bài thi tiêu chuẩn 1", ) bai_thi_tieu_chuan_2_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="Bài thi tiêu chuẩn 2", ) bai_thi_tieu_chuan_3_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="Bài thi tiêu chuẩn 3", ) bai_thi_tieu_chuan_4_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="Bài thi tiêu chuẩn 4", ) bai_thi_tieu_du_phong_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.bai_thi", string="Bài thi dự phòng" ) def name_get(self): return [(record.id, record.name) for record in self] def write(self, vals): return super().write(vals) class CenhomesChuyenLop(models.Model): _name = "cenhomes.chuyen_lop" _description = "Chuyển Lớp" hoc_vien_id = fields.Many2one( "cenhomes.hoc_vien", string="Học viên", required=True, ) mshv = fields.Char( string="Mã Số Học Viên", related="hoc_vien_id.mshv", store=True, readonly=True, ) lop_hien_tai_id = fields.Many2one( "cenhomes.lop_hoc", string="ID Lớp Hiện Tại", required=True, ) lop_xin_chuyen_id = fields.Many2one( "cenhomes.lop_hoc", string="ID Lớp Xin Chuyển (Cùng Trình Độ)", ) ngay_nhan_don = fields.Date(string="Ngày Nhận Đơn Chuyển Lớp") trang_thai = fields.Selection( selection=[ ("cho_duyet", "Chờ Duyệt"), ("da_duyet", "Đã Duyệt"), ("huy_bo", "Hủy Bỏ"), ], string="Trạng Thái Chuyển Lớp", default="cho_duyet", ) ngay_chuyen_lop = fields.Date(string="Ngày Chuyển Lớp") ghi_chu = fields.Text(string="Ghi Chú") so_lan_chuyen = fields.Integer(string="Số Lần Chuyển", default=0) class CenhomesThoiKhoaBieu(models.Model): _name = "cenhomes.thoi_khoa_bieu" _description = "Thời Khóa Biểu" giao_vien_day_tieng_id = fields.Many2one( ondelete="cascade", comodel_name="cenhomes.giao_vien_day_tieng", string="Giáo viên dạy tiếng", ) lop_hoc_id = fields.Many2one( comodel_name="cenhomes.lop_hoc", string="Lớp học", ondelete="cascade", ) lop_on_id = fields.Many2one( comodel_name="cenhomes.lop_on", string="Lớp học ôn", ondelete="cascade", ) phong_hoc = fields.Char(string="Phòng học") kap = fields.Char(string="KAP") ngay = fields.Date(string="Ngày") buoi = fields.Selection(string="Buổi", selection=QuanLyLopHoc._time_of_day) # def write(self, vals): # return super().write(vals) # def name_get(self): # return [(record.id) for record in self] class CenhomesDiemDanh(models.Model): _name = "cenhomes.diem_danh" _description = "Điểm danh" 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, ) nguoi_diem_danh_id = fields.Char( string="Người điểm danh", ) thoi_khoa_bieu_id = fields.Many2one( comodel_name="cenhomes.thoi_khoa_bieu", string="Thời khóa biểu", required=True, ondelete="cascade", ) trang_thai = fields.Selection( selection=QuanLyLopHoc._trang_thai_diem_danh, string="Trạng thái điểm danh", required=True, default="co_mat", ) def write(self, vals): return super().write(vals)