from odoo import api, fields, models, _ from datetime import timedelta class AcademySchedule(models.Model): _name = 'academy.schedule' _description = 'Academy Schedule' name = fields.Char(string='Tên lịch học', required=True) course_id = fields.Many2one('academy.course', string='Khóa học', required=True) teacher_id = fields.Many2one('academy.teacher', string='Giáo viên', required=True) student_ids = fields.Many2many('academy.student', string='Học viên tham gia') date = fields.Datetime(string='Ngày và giờ diễn ra buổi học', required=True) duration = fields.Float(string='Thời lượng buổi học (tính theo giờ)', required=True) state = fields.Selection([ ('draft', 'Mới đặt lịch'), ('confirmed', 'Xác nhận'), ('cancel', 'Đã hủy') ], string='Trạng thái', default='draft', required=True) reminder_sent = fields.Boolean(string="Reminder Sent", default=False) def action_confirm(self): self.state = 'confirmed' def action_cancel(self): self.state = 'cancel' def _send_reminder(self): now = fields.Datetime.now() next_day = now + timedelta(days=1) sessions = self.search([ ('state', '=', 'confirmed'), ('date', '>=', now), ('date', '<=', next_day), ('reminder_sent', '=', False), ]) template = self.env.ref('academy_management.email_template_reminder', raise_if_not_found=False) if not template: return for session in sessions: if session.student_ids: print(f'Gửi nhắc nhở lịch học: {session.name}') template.send_mail(session.id, force_send=True) session.reminder_sent = True