[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:
Rob Coekaerts
2022-09-29 09:08:50 +02:00
parent 525806a039
commit b0ab807e0a
+23 -12
View File
@@ -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)