From c0a658abb42484502784ff62e72d7096d2b08431 Mon Sep 17 00:00:00 2001 From: XuanHuyen Date: Sun, 9 Mar 2025 22:54:18 +0700 Subject: [PATCH] create module student management --- student_management/__init__.py | 4 ++ student_management/__manifest__.py | 38 ++++++++++++++ student_management/controllers/__init__.py | 3 ++ student_management/controllers/controllers.py | 22 +++++++++ student_management/demo/demo.xml | 30 ++++++++++++ student_management/models/__init__.py | 4 ++ student_management/models/student_course.py | 10 ++++ student_management/models/student_student.py | 16 ++++++ .../security/ir.model.access.csv | 3 ++ .../views/student_course_views.xml | 48 ++++++++++++++++++ student_management/views/student_menus.xml | 21 ++++++++ .../views/student_student_views.xml | 49 +++++++++++++++++++ 12 files changed, 248 insertions(+) create mode 100644 student_management/__init__.py create mode 100644 student_management/__manifest__.py create mode 100644 student_management/controllers/__init__.py create mode 100644 student_management/controllers/controllers.py create mode 100644 student_management/demo/demo.xml create mode 100644 student_management/models/__init__.py create mode 100644 student_management/models/student_course.py create mode 100644 student_management/models/student_student.py create mode 100644 student_management/security/ir.model.access.csv create mode 100644 student_management/views/student_course_views.xml create mode 100644 student_management/views/student_menus.xml create mode 100644 student_management/views/student_student_views.xml diff --git a/student_management/__init__.py b/student_management/__init__.py new file mode 100644 index 0000000..aa4d0fd --- /dev/null +++ b/student_management/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models diff --git a/student_management/__manifest__.py b/student_management/__manifest__.py new file mode 100644 index 0000000..add56da --- /dev/null +++ b/student_management/__manifest__.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Student Management", + + 'summary': "Short (1 phrase/line) summary of the module's purpose", + + 'description': """ +Long description of module's purpose + """, + + 'author': "My Company", + 'website': "https://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Management', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['base'], + + # always loaded + 'data': [ + 'security/ir.model.access.csv', + 'views/student_student_views.xml', + 'views/student_course_views.xml', + 'views/student_menus.xml', + ], + # only loaded in demonstration mode + 'demo': [ + 'demo/demo.xml', + ], + 'installable': True, + 'application': True, + 'auto_install': False, +} + diff --git a/student_management/controllers/__init__.py b/student_management/controllers/__init__.py new file mode 100644 index 0000000..b0f26a9 --- /dev/null +++ b/student_management/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers diff --git a/student_management/controllers/controllers.py b/student_management/controllers/controllers.py new file mode 100644 index 0000000..8576ab4 --- /dev/null +++ b/student_management/controllers/controllers.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class StudentManagement(http.Controller): +# @http.route('/student_management/student_management', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/student_management/student_management/objects', auth='public') +# def list(self, **kw): +# return http.request.render('student_management.listing', { +# 'root': '/student_management/student_management', +# 'objects': http.request.env['student_management.student_management'].search([]), +# }) + +# @http.route('/student_management/student_management/objects/', auth='public') +# def object(self, obj, **kw): +# return http.request.render('student_management.object', { +# 'object': obj +# }) + diff --git a/student_management/demo/demo.xml b/student_management/demo/demo.xml new file mode 100644 index 0000000..28cc56d --- /dev/null +++ b/student_management/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + diff --git a/student_management/models/__init__.py b/student_management/models/__init__.py new file mode 100644 index 0000000..0c8c299 --- /dev/null +++ b/student_management/models/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import student_student +from . import student_course \ No newline at end of file diff --git a/student_management/models/student_course.py b/student_management/models/student_course.py new file mode 100644 index 0000000..96e1ce6 --- /dev/null +++ b/student_management/models/student_course.py @@ -0,0 +1,10 @@ +from odoo import fields, models + +class StudentCourse(models.Model): + _name = 'student.course' + _description = 'Student Course' + + name = fields.Char(string='Môn học', required=True) + code = fields.Char(string='Mã môn học', required=True, unique=True) + credit = fields.Integer(string='Số tín chỉ') + student_ids = fields.Many2many('student.student', string='Học sinh') diff --git a/student_management/models/student_student.py b/student_management/models/student_student.py new file mode 100644 index 0000000..58fcdb4 --- /dev/null +++ b/student_management/models/student_student.py @@ -0,0 +1,16 @@ +from odoo import fields, models + +class StudentStudent(models.Model): + _name = 'student.student' + _description = 'Student Management' + + name = fields.Char(string='Tên học sinh', required=True) + student_id = fields.Char(string='Mã học sinh', unique=True) + birth_date = fields.Date(string='Ngày sinh') + gender = fields.Selection([ + ('male', 'Nam giới'), + ('female', 'Nữ giới') + ]) + 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') diff --git a/student_management/security/ir.model.access.csv b/student_management/security/ir.model.access.csv new file mode 100644 index 0000000..d5ef33b --- /dev/null +++ b/student_management/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_student_student,student_student,model_student_student,base.group_user,1,1,1,1 +access_student_course,student_course,model_student_course,base.group_user,1,1,1,1 diff --git a/student_management/views/student_course_views.xml b/student_management/views/student_course_views.xml new file mode 100644 index 0000000..71e30ae --- /dev/null +++ b/student_management/views/student_course_views.xml @@ -0,0 +1,48 @@ + + + + + student.course.view.tree + student.course + + + + + + + + + + + + student.course.view.form + student.course + +
+ + + + + + + + + + + + + + + + +
+
+
+ + + Môn học + student.course + list,form + + +
\ No newline at end of file diff --git a/student_management/views/student_menus.xml b/student_management/views/student_menus.xml new file mode 100644 index 0000000..4196064 --- /dev/null +++ b/student_management/views/student_menus.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/student_management/views/student_student_views.xml b/student_management/views/student_student_views.xml new file mode 100644 index 0000000..a63f6b2 --- /dev/null +++ b/student_management/views/student_student_views.xml @@ -0,0 +1,49 @@ + + + + + student.student.list + student.student + + + + + + + + + + + + + + student.student.form + student.student + +
+ + + + + + + + + + + + + + + +
+
+
+ + + Học sinh + student.student + list,form + + +
\ No newline at end of file