[IMP] hr: Keep employee name on user change

Purpose
=======

Managing people's names is hard.
The full name is stored in a single field.
But is it first name first? Last name first? How many names?

We don't want an onchange to automatically change names
for which we might have spent a lot of energy correctly
formatting in the database.

Specification
=============

Remove the automatic sync between the user's name
and the employee's name when a user is linked to
the employee.

TaskID: 1953003

closes odoo/odoo#32521

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Lucas Lefèvre
2019-05-16 14:31:22 +00:00
committed by Yannick Tivisse
parent c498d35890
commit ca2c0b583f
2 changed files with 7 additions and 4 deletions
+5 -2
View File
@@ -254,6 +254,8 @@ class Employee(models.Model):
def _onchange_user(self):
if self.user_id:
self.update(self._sync_user(self.user_id))
if not self.name:
self.name = self.user_id.name
@api.onchange('resource_calendar_id')
def _onchange_timezone(self):
@@ -262,7 +264,6 @@ class Employee(models.Model):
def _sync_user(self, user):
vals = dict(
name=user.name,
image=user.image,
work_email=user.email,
)
@@ -273,7 +274,9 @@ class Employee(models.Model):
@api.model
def create(self, vals):
if vals.get('user_id'):
vals.update(self._sync_user(self.env['res.users'].browse(vals['user_id'])))
user = self.env['res.users'].browse(vals['user_id'])
vals.update(self._sync_user(user))
vals['name'] = vals.get('name', user.name)
tools.image_resize_images(vals)
employee = super(Employee, self).create(vals)
url = '/web#%s' % url_encode({'action': 'hr.plan_wizard_action', 'active_id': employee.id, 'active_model': 'hr.employee'})
+2 -2
View File
@@ -28,7 +28,7 @@ class TestHrEmployee(TestHrCommon):
employee_form.work_email = 'raoul@example.com'
employee_form.user_id = self.res_users_hr_officer
employee = employee_form.save()
self.assertEqual(employee.name, self.res_users_hr_officer.name)
self.assertEqual(employee.name, 'Raoul Grosbedon')
self.assertEqual(employee.work_email, self.res_users_hr_officer.email)
self.assertEqual(employee.tz, self.res_users_hr_officer.tz)
@@ -42,6 +42,6 @@ class TestHrEmployee(TestHrCommon):
employee_form.tz = _tz
employee_form.user_id = self.res_users_hr_officer
employee = employee_form.save()
self.assertEqual(employee.name, self.res_users_hr_officer.name)
self.assertEqual(employee.name, 'Raoul Grosbedon')
self.assertEqual(employee.work_email, self.res_users_hr_officer.email)
self.assertEqual(employee.tz, _tz)