Odoo-Tutorial/cenhomes_student/models/models_lop_hoc.py
2025-03-04 16:53:07 +07:00

239 lines
7.1 KiB
Python

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)