from odoo import api, models class McEnrollment(models.Model): _inherit = "mc.enrollment" @api.model_create_multi def create(self, vals_list): enrollments = super().create(vals_list) enrollments.filtered(lambda e: e.state == "active")._sync_lms_channel_membership() return enrollments def write(self, vals): res = super().write(vals) if "state" in vals or "batch_id" in vals: self.filtered(lambda e: e.state == "active")._sync_lms_channel_membership() return res def _sync_lms_channel_membership(self): # Enrolling in the batch is what enrolls the student in its # course channel - the whole point of this module (O8 spec: # "link a channel to a mc.batch so enrolled students see their # courses"). Stock website_slides API, nothing custom. for enrollment in self: channel = enrollment.batch_id.channel_id if channel: channel._action_add_members(enrollment.student_id.partner_id)