shcool/learning_center/models/course_chapter.py
2026-06-15 23:57:01 +08:00

32 lines
1.6 KiB
Python

from odoo import api, fields, models
class CourseChapter(models.Model):
_name = 'course.chapter'
_description = '课程章节'
_rec_name = 'name'
_inherit = ['mail.thread']
_order = 'course_id, sequence, id'
name = fields.Char(string='章节名称', required=True)
sequence = fields.Integer(string='序号', default=10)
description = fields.Html(string='章节描述')
course_id = fields.Many2one('learning.course', string='所属课程', required=True, ondelete='cascade')
is_published = fields.Boolean(string='是否发布', default=True)
resource_count = fields.Integer(string='资源数量', compute='_compute_resource_count')
video_count = fields.Integer(string='视频数量', compute='_compute_resource_count')
doc_count = fields.Integer(string='文档数量', compute='_compute_resource_count')
resource_ids = fields.One2many('course.chapter.resource', 'chapter_id', string='章节资源')
# homework_ids = fields.One2many('course.homework', 'chapter_id', string='关联作业')
syllabus_ids = fields.One2many('course.syllabus', 'chapter_id', string='教学大纲/教案')
def _compute_resource_count(self):
for record in self:
record.resource_count = len(record.resource_ids)
record.video_count = len(record.resource_ids.filtered(lambda r: r.resource_type == 'video'))
record.doc_count = len(record.resource_ids.filtered(lambda r: r.resource_type in ['pdf', 'ppt']))
def action_publish(self):
self.is_published = True
def action_hide(self):
self.is_published = False