When a user is modified to grant access to new groups, user is auto-enrolled to all slide courses that have a auto-enroll policy for any of the new groups. However, that auto-enrolling process was not working correctly due to how values to be written to the user are coming. In order to know what are the actual new groups, values need to be pre-processed, which was not being done. This commit fixes the above issue by pre-processing written values before extracting new groups. closes odoo/odoo#153634 X-original-commit: e27be4a81c304c2d749b4417d2184cfed07eddf3 Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, models, _
|
|
|
|
|
|
class Users(models.Model):
|
|
_inherit = 'res.users'
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
""" Trigger automatic subscription based on user groups """
|
|
users = super(Users, self).create(vals_list)
|
|
for user in users:
|
|
self.env['slide.channel'].sudo().search([
|
|
('enroll_group_ids', 'in', user.groups_id.ids)
|
|
])._action_add_members(user.partner_id)
|
|
return users
|
|
|
|
def write(self, vals):
|
|
""" Trigger automatic subscription based on updated user groups """
|
|
res = super(Users, self).write(vals)
|
|
sanitized_vals = self._remove_reified_groups(vals)
|
|
if sanitized_vals.get('groups_id'):
|
|
added_group_ids = [command[1] for command in sanitized_vals['groups_id'] if command[0] == 4]
|
|
added_group_ids += [id for command in sanitized_vals['groups_id'] if command[0] == 6 for id in command[2]]
|
|
self.env['slide.channel'].sudo().search([('enroll_group_ids', 'in', added_group_ids)])._action_add_members(self.mapped('partner_id'))
|
|
return res
|
|
|
|
def get_gamification_redirection_data(self):
|
|
res = super(Users, self).get_gamification_redirection_data()
|
|
res.append({
|
|
'url': '/slides',
|
|
'label': _('See our eLearning')
|
|
})
|
|
return res
|