47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
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
|
|
|