From f16cfc4e40723d8cbc0ff71f3c2e33fa6e5ed902 Mon Sep 17 00:00:00 2001 From: XuanHuyen Date: Wed, 2 Apr 2025 14:43:00 +0700 Subject: [PATCH] general code --- academy_management/__manifest__.py | 1 + academy_management/data/ir_sequence_data.xml | 31 +++++++++++++++++++ academy_management/models/academy_course.py | 17 ++++++++-- academy_management/models/academy_student.py | 17 ++++++++-- academy_management/models/academy_teacher.py | 17 ++++++++-- .../security/academy_security.xml | 24 ++++++++++++++ .../views/academy_course_views.xml | 3 +- 7 files changed, 102 insertions(+), 8 deletions(-) create mode 100644 academy_management/data/ir_sequence_data.xml create mode 100644 academy_management/security/academy_security.xml diff --git a/academy_management/__manifest__.py b/academy_management/__manifest__.py index f8090a4..d5bff96 100644 --- a/academy_management/__manifest__.py +++ b/academy_management/__manifest__.py @@ -23,6 +23,7 @@ Academy Management # always loaded 'data': [ 'security/ir.model.access.csv', + 'data/ir_sequence_data.xml', 'views/academy_course_views.xml', 'views/academy_schedule_views.xml', 'views/academy_student_views.xml', diff --git a/academy_management/data/ir_sequence_data.xml b/academy_management/data/ir_sequence_data.xml new file mode 100644 index 0000000..637adb8 --- /dev/null +++ b/academy_management/data/ir_sequence_data.xml @@ -0,0 +1,31 @@ + + + + + Academy Course Code + academy.course + CNTT + 3 + 1 + 1 + + + + Academy Student Code + academy.student + SV + 3 + 1 + 1 + + + + Academy Teacher Code + academy.teacher + GV + 3 + 1 + 1 + + + \ No newline at end of file diff --git a/academy_management/models/academy_course.py b/academy_management/models/academy_course.py index 02982e9..9107c30 100644 --- a/academy_management/models/academy_course.py +++ b/academy_management/models/academy_course.py @@ -5,6 +5,19 @@ class AcademyCourse(models.Model): _description = 'Academy Course' name = fields.Char(string='Tên khóa học', required=True) - code = fields.Char(string='Mã khóa học', required=True) + code = fields.Char(string='Mã khóa học', required=True, copy=False, readonly=True, default=lambda self: _(' ')) description = fields.Text(string='Mô tả khóa học') - student_ids = fields.Many2many('academy.student', string='Học viên đăng ký khóa học') \ No newline at end of file + student_ids = fields.Many2many('academy.student', string='Học viên đăng ký khóa học') + + _sql_constraints = [( + 'code_unique', + 'unique(code)', + 'Mã khóa học phải là duy nhất!' + )] + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('code', _(' ')) == _(' '): + vals['code'] = self.env['ir.sequence'].next_by_code('academy.course') or 'CNTT001' + return super(AcademyCourse, self).create(vals_list) \ No newline at end of file diff --git a/academy_management/models/academy_student.py b/academy_management/models/academy_student.py index 8099d2b..4dbc704 100644 --- a/academy_management/models/academy_student.py +++ b/academy_management/models/academy_student.py @@ -5,8 +5,21 @@ class AcademyStudent(models.Model): _description = 'Academy Student' name = fields.Char(string='Tên học sinh', required=True) - code = fields.Char(string='Mã học sinh', required=True) + code = fields.Char(string='Mã học sinh', required=True, copy=False, readonly=True, default=lambda self: _(' ')) birth_date = fields.Date(string='Ngày sinh') email = fields.Char(string='Email') phone = fields.Char(string='Số điện thoại') - course_ids = fields.Many2many('academy.course', string='Các khóa học học sinh đăng ký') \ No newline at end of file + course_ids = fields.Many2many('academy.course', string='Các khóa học học sinh đăng ký') + + _sql_constraints = [( + 'code_unique', + 'unique(code)', + 'Mã học sinh phải là duy nhất!' + )] + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('code', _(' ')) == _(' '): + vals['code'] = self.env['ir.sequence'].next_by_code('academy.student') or 'HS001' + return super().create(vals_list) \ No newline at end of file diff --git a/academy_management/models/academy_teacher.py b/academy_management/models/academy_teacher.py index ccf1286..25d6d1a 100644 --- a/academy_management/models/academy_teacher.py +++ b/academy_management/models/academy_teacher.py @@ -5,7 +5,20 @@ class AcademyTeacher(models.Model): _description = 'Academy Teacher' name = fields.Char(string='Tên giáo viên', required=True) - code = fields.Char(string='Mã giáo viên', required=True) + code = fields.Char(string='Mã giáo viên', required=True, copy=False, readonly=True, default=lambda self: _(' ')) email = fields.Char(string='Email') phone = fields.Char(string='Số điện thoại') - course_ids = fields.Many2many('academy.course', string='Các khóa học giảng dạy') \ No newline at end of file + course_ids = fields.Many2many('academy.course', string='Các khóa học giảng dạy') + + _sql_constraints = [( + 'code_unique', + 'unique(code)', + 'Mã giáo viên phải là duy nhất!' + )] + + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('code', _(' ')) == _(' '): + vals['code'] = self.env['ir.sequence'].next_by_code('academy.teacher') or 'GV001' + return super().create(vals_list) \ No newline at end of file diff --git a/academy_management/security/academy_security.xml b/academy_management/security/academy_security.xml new file mode 100644 index 0000000..79a45c5 --- /dev/null +++ b/academy_management/security/academy_security.xml @@ -0,0 +1,24 @@ + + + + + + Academy Management + + + + Academy Staff + + + this user can only see the list of students but not edited. + + + + Academy Admin + + + this user have the right to manage students, lecturers, courses. + + + + \ No newline at end of file diff --git a/academy_management/views/academy_course_views.xml b/academy_management/views/academy_course_views.xml index 29aaaf4..0be18cb 100644 --- a/academy_management/views/academy_course_views.xml +++ b/academy_management/views/academy_course_views.xml @@ -9,7 +9,7 @@ - + @@ -25,7 +25,6 @@ -