32 lines
1.6 KiB
Python
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 |