As message_post is defined on mail.thread abstract class its api.returns is not automatically added on overridden versions of the method. This commit add missing api.returns on all overrides of the method.
50 lines
1.9 KiB
Python
50 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, models, fields
|
|
from odoo import SUPERUSER_ID
|
|
|
|
|
|
class User(models.Model):
|
|
|
|
_inherit = ['res.users']
|
|
|
|
employee_ids = fields.One2many('hr.employee', 'user_id', string='Related employees')
|
|
|
|
@api.multi
|
|
def write(self, vals):
|
|
""" When renaming admin user, we want its new name propagated to its related employees """
|
|
result = super(User, self).write(vals)
|
|
Employee = self.env['hr.employee']
|
|
if vals.get('name'):
|
|
for user in self.filtered(lambda user: user.id == SUPERUSER_ID):
|
|
employees = Employee.search([('user_id', '=', user.id)])
|
|
employees.write({'name': vals['name']})
|
|
return result
|
|
|
|
@api.multi
|
|
def _get_related_employees(self):
|
|
self.ensure_one()
|
|
ctx = dict(self.env.context)
|
|
if 'thread_model' in ctx:
|
|
ctx['thread_model'] = 'hr.employee'
|
|
return self.env['hr.employee'].with_context(ctx).search([('user_id', '=', self.id)])
|
|
|
|
@api.multi
|
|
@api.returns('self', lambda value: value.id)
|
|
def message_post(self, **kwargs):
|
|
""" Redirect the posting of message on res.users to the related employees.
|
|
This is done because when giving the context of Chatter on the
|
|
various mailboxes, we do not have access to the current partner_id.
|
|
"""
|
|
self.ensure_one()
|
|
if kwargs.get('message_type') == 'email':
|
|
return super(User, self).message_post(**kwargs)
|
|
message_id = None
|
|
employees = self._get_related_employees()
|
|
if not employees: # no employee: fall back on previous behavior
|
|
return super(User, self).message_post(**kwargs)
|
|
for employee in employees:
|
|
message_id = employee.message_post(**kwargs)
|
|
return message_id
|