Files
Odoo-Tutorial/student_management/models/student_student.py
T

41 lines
1.6 KiB
Python
Raw Normal View History

2025-03-14 11:19:37 +07:00
from odoo import fields, models, api, _
from odoo.exceptions import UserError
2025-03-09 22:54:18 +07:00
class StudentStudent(models.Model):
_name = 'student.student'
_description = 'Student Management'
name = fields.Char(string='Tên học sinh', required=True)
2025-03-10 00:18:59 +07:00
student_id = fields.Char(string='Mã học sinh', unique=True, copy=False, required=True, default=lambda self: self._generate_student_id())
2025-03-09 22:54:18 +07:00
birth_date = fields.Date(string='Ngày sinh')
gender = fields.Selection([
('male', 'Nam giới'),
('female', 'Nữ giới')
2025-03-10 00:18:59 +07:00
], default='male')
2025-03-09 22:54:18 +07:00
email = fields.Char(string='Email', required=True, unique=True)
phone = fields.Char(string='Số điện thoại')
course_ids = fields.Many2many('student.course', string='Môn học')
2025-03-10 00:18:59 +07:00
2025-03-14 11:19:37 +07:00
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
('graduated', 'Graduated')
], string='Status', default='draft')
def action_confirm(self):
self.write({'state': 'confirmed'})
def action_graduate(self):
2025-03-19 09:29:55 +07:00
if not self.env.user.has_group('base.group_system'):
2025-03-14 11:19:37 +07:00
raise UserError(_("Only administrators can graduate students!"))
self.write({'state': 'graduated'})
2025-03-10 00:18:59 +07:00
@api.model
def _generate_student_id(self):
last_student = self.search([], order='id desc', limit=1)
new_id = int(last_student.student_id.split('-')[-1]) + 1 if last_student and last_student.student_id else 1
return f'STU-{fields.Date.today().year}-{new_id:04d}'
def action_generate_student_id(self):
for record in self:
record.write({'student_id': self._generate_student_id()})