From 6fcad703268e00dd4a152f5da4f0949c962b98ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Fri, 7 Aug 2026 11:58:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- college/__manifest__.py | 3 +- college/models/__init__.py | 1 + college/models/course.py | 1 + college/models/training.py | 11 +++++ college/security/ir.model.access.csv | 7 +++- college/static/src/img/about.png | Bin 0 -> 6879 bytes college/static/src/img/training.png | Bin 0 -> 6734 bytes college/views/chapter_views.xml | 1 + college/views/menus.xml | 18 ++++++++ college/views/progress_views.xml | 47 ++++++++++++++++++++- college/views/training_views.xml | 59 +++++++++++++++++++++++++++ 11 files changed, 144 insertions(+), 4 deletions(-) create mode 100644 college/models/training.py create mode 100644 college/static/src/img/about.png create mode 100644 college/static/src/img/training.png create mode 100644 college/views/training_views.xml diff --git a/college/__manifest__.py b/college/__manifest__.py index 1b97ea0..34e81b1 100644 --- a/college/__manifest__.py +++ b/college/__manifest__.py @@ -24,7 +24,7 @@ """, 'category': 'Education', 'sequence': 20, - 'depends': ['base', 'web'], + 'depends': ['base', 'web', 'mail'], 'external_dependencies': { 'python': ['pypinyin'], }, @@ -40,6 +40,7 @@ 'views/assignment_batch_wizard_views.xml', 'views/import_wizard_views.xml', 'views/homework_views.xml', + 'views/training_views.xml', 'views/menus.xml', ], 'application': True, diff --git a/college/models/__init__.py b/college/models/__init__.py index 49153d6..4ddfdc9 100644 --- a/college/models/__init__.py +++ b/college/models/__init__.py @@ -7,3 +7,4 @@ from . import progress from . import assignment from . import assignment_batch_wizard from . import import_wizard +from . import training diff --git a/college/models/course.py b/college/models/course.py index f4d92c7..ea5e44f 100644 --- a/college/models/course.py +++ b/college/models/course.py @@ -28,6 +28,7 @@ class SchoolCourse(models.Model): _name = 'yuthon.school.course' _description = '课程' + _inherit = ['mail.thread', 'mail.activity.mixin'] _order = 'semester, college, name' name = fields.Char(string='课程名称', required=True, index=True) diff --git a/college/models/training.py b/college/models/training.py new file mode 100644 index 0000000..64b74fe --- /dev/null +++ b/college/models/training.py @@ -0,0 +1,11 @@ +from odoo import fields, models + + +class SchoolTraining(models.Model): + """我的实训(占位模型)。""" + + _name = 'yuthon.school.training' + _description = '我的实训' + + name = fields.Char(string='实训名称', required=True) + note = fields.Text(string='备注') \ No newline at end of file diff --git a/college/security/ir.model.access.csv b/college/security/ir.model.access.csv index ecf967c..3ea9985 100644 --- a/college/security/ir.model.access.csv +++ b/college/security/ir.model.access.csv @@ -1,7 +1,7 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_yuthon_school_course_admin,yuthon.school.course.admin,model_yuthon_school_course,base.group_system,1,1,1,1 access_yuthon_school_course_teacher,yuthon.school.course.teacher,model_yuthon_school_course,college.group_teacher,1,1,1,1 -access_yuthon_school_course_student,yuthon.school.course.student,model_yuthon_school_course,college.group_student,1,0,0,0 +access_yuthon_school_course_student,yuthon.school.course.student,model_yuthon_school_course,college.group_student,1,1,0,0 access_yuthon_school_student_admin,yuthon.school.student.admin,model_yuthon_school_student,base.group_system,1,1,1,1 access_yuthon_school_student_teacher,yuthon.school.student.teacher,model_yuthon_school_student,college.group_teacher,1,1,1,1 access_yuthon_school_student_student,yuthon.school.student.student,model_yuthon_school_student,college.group_student,1,0,0,0 @@ -13,7 +13,7 @@ access_yuthon_school_class_teacher,yuthon.school.class.teacher,model_yuthon_scho access_yuthon_school_class_student,yuthon.school.class.student,model_yuthon_school_class,college.group_student,1,0,0,0 access_yuthon_school_progress_admin,yuthon.school.progress.admin,model_yuthon_school_progress,base.group_system,1,1,1,1 access_yuthon_school_progress_teacher,yuthon.school.progress.teacher,model_yuthon_school_progress,college.group_teacher,1,1,1,1 -access_yuthon_school_progress_student,yuthon.school.progress.student,model_yuthon_school_progress,college.group_student,1,0,0,0 +access_yuthon_school_progress_student,yuthon.school.progress.student,model_yuthon_school_progress,college.group_student,1,1,0,0 access_yuthon_school_assignment_admin,yuthon.school.assignment.admin,model_yuthon_school_assignment,base.group_system,1,1,1,1 access_yuthon_school_assignment_teacher,yuthon.school.assignment.teacher,model_yuthon_school_assignment,college.group_teacher,1,1,1,1 access_yuthon_school_assignment_student,yuthon.school.assignment.student,model_yuthon_school_assignment,college.group_student,1,0,0,0 @@ -30,3 +30,6 @@ access_yuthon_school_course_chapter_student,yuthon.school.course.chapter.student access_yuthon_school_course_chapter_attachment_admin,yuthon.school.course.chapter.attachment.admin,model_yuthon_school_course_chapter_attachment,base.group_system,1,1,1,1 access_yuthon_school_course_chapter_attachment_teacher,yuthon.school.course.chapter.attachment.teacher,model_yuthon_school_course_chapter_attachment,college.group_teacher,1,1,1,1 access_yuthon_school_course_chapter_attachment_student,yuthon.school.course.chapter.attachment.student,model_yuthon_school_course_chapter_attachment,college.group_student,1,0,0,0 +access_yuthon_school_training_admin,yuthon.school.training.admin,model_yuthon_school_training,base.group_system,1,1,1,1 +access_yuthon_school_training_teacher,yuthon.school.training.teacher,model_yuthon_school_training,college.group_teacher,1,1,1,1 +access_yuthon_school_training_student,yuthon.school.training.student,model_yuthon_school_training,college.group_student,1,1,1,1 diff --git a/college/static/src/img/about.png b/college/static/src/img/about.png new file mode 100644 index 0000000000000000000000000000000000000000..a11d4756350b2e32061473436195c873406a2a33 GIT binary patch literal 6879 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 literal 0 HcmV?d00001 diff --git a/college/static/src/img/training.png b/college/static/src/img/training.png new file mode 100644 index 0000000000000000000000000000000000000000..b84234afe6c9df35ad8fe53dad56e5d7b588d928 GIT binary patch literal 6734 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 literal 0 HcmV?d00001 diff --git a/college/views/chapter_views.xml b/college/views/chapter_views.xml index f97563e..16af63f 100644 --- a/college/views/chapter_views.xml +++ b/college/views/chapter_views.xml @@ -104,6 +104,7 @@ + diff --git a/college/views/menus.xml b/college/views/menus.xml index 280f8ca..5b65349 100644 --- a/college/views/menus.xml +++ b/college/views/menus.xml @@ -1,4 +1,22 @@ + + + + + + + + + + + + + yuthon.school.progress kanban,list,form ['&', ('student_id.user_id', '=', uid), ('course_id.state', '=', 'published')] + @@ -48,10 +52,11 @@ else: - + yuthon.school.progress.form yuthon.school.progress +

@@ -76,6 +81,46 @@ else: + + + yuthon.school.progress.form.student + yuthon.school.progress + 5 + + + + +
+

+ +

+
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ yuthon.school.progress.search diff --git a/college/views/training_views.xml b/college/views/training_views.xml new file mode 100644 index 0000000..fdf671a --- /dev/null +++ b/college/views/training_views.xml @@ -0,0 +1,59 @@ + + + + yuthon.school.training.kanban + yuthon.school.training + + + + +
+
+ +
+
+
+
+
+
+
+ + + + yuthon.school.training.list + yuthon.school.training + + + + + + + + + + + yuthon.school.training.form + yuthon.school.training + +
+ + + + + + +
+
+
+ + + + 我的实训 + yuthon.school.training + kanban,list,form + + +
\ No newline at end of file