[FIX] hr_skill_slides: log course notifications on correct chatter
Since https://github.com/odoo/odoo/pull/94876 every call to _action_add_member (or _remove_membership) in hr_skill_slides is wrongly logged on the chatter of the calling employee. With this commit, it is now logged on the affected employee. The method is now also supported to be used in batch. task-2980912 closes odoo/odoo#101486 X-original-commit: dd77aee24cdac95dd4c07393f8ee74fe5d80d922 Signed-off-by: Kevin Baptiste <kba@odoo.com>
This commit is contained in:
@@ -58,22 +58,33 @@ class Channel(models.Model):
|
||||
|
||||
def _action_add_members(self, target_partners, **member_values):
|
||||
res = super()._action_add_members(target_partners, **member_values)
|
||||
|
||||
if self.env.user.employee_ids:
|
||||
msg = _('The employee subscribed to the course <a href="%(link)s">%(course)s</a>',
|
||||
link=self.website_url,
|
||||
course=self.name)
|
||||
self.env.user.employee_id.message_post(body=msg)
|
||||
|
||||
for channel in self:
|
||||
channel._message_employee_chatter(
|
||||
_('The employee subscribed to the course <a href="%(link)s">%(course)s</a>', link=channel.website_url, course=channel.name),
|
||||
target_partners)
|
||||
return res
|
||||
|
||||
def _remove_membership(self, partner_ids):
|
||||
res = super()._remove_membership(partner_ids)
|
||||
|
||||
if self.env.user.employee_ids:
|
||||
msg = _('The employee left the course <a href="%(link)s">%(course)s</a>',
|
||||
link=self.website_url,
|
||||
course=self.name)
|
||||
self.env.user.employee_id.message_post(body=msg)
|
||||
partners = self.env['res.partner'].browse(partner_ids)
|
||||
|
||||
for channel in self:
|
||||
channel._message_employee_chatter(
|
||||
_('The employee left the course <a href="%(link)s">%(course)s</a>', link=channel.website_url, course=channel.name),
|
||||
partners)
|
||||
return res
|
||||
|
||||
def _message_employee_chatter(self, msg, partners):
|
||||
for partner in partners:
|
||||
employee = self.env['hr.employee']
|
||||
if partner.employee:
|
||||
employee = partner.employee
|
||||
elif partner.user_ids:
|
||||
# If the partner is related to a company, we need the employee who belongs to that same company.
|
||||
employee = partner.user_ids.sudo().filtered(
|
||||
lambda u: u.employee_id and (not partner.company_id or u.employee_id.company_id == partner.company_id)
|
||||
).employee_id
|
||||
|
||||
if employee:
|
||||
employee.sudo().message_post(body=msg)
|
||||
|
||||
Reference in New Issue
Block a user