diff --git a/addons/auth_password_policy/views/res_users.xml b/addons/auth_password_policy/views/res_users.xml
index 568f0d34259..ee1c0ece9aa 100644
--- a/addons/auth_password_policy/views/res_users.xml
+++ b/addons/auth_password_policy/views/res_users.xml
@@ -19,4 +19,14 @@
+
+ Change Password User
+
+ change.password.user
+
+
+ password_meter
+
+
+
diff --git a/addons/hr/tests/test_self_user_access.py b/addons/hr/tests/test_self_user_access.py
index a3cb1c63075..428dab0466b 100644
--- a/addons/hr/tests/test_self_user_access.py
+++ b/addons/hr/tests/test_self_user_access.py
@@ -87,7 +87,7 @@ class TestSelfAccessProfile(TestHrCommon):
})
view = self.env.ref('hr.res_users_view_form_profile')
available_actions = james.get_views([(view.id, 'form')], {'toolbar': True})['views']['form']['toolbar']['action']
- change_password_action = self.env.ref("base.change_password_wizard_action")
+ change_password_action = self.env.ref("base.change_password_action_server")
self.assertFalse(any(x['id'] == change_password_action.id for x in available_actions))
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py
index 2d0925f9d83..fbb0e2167bd 100644
--- a/odoo/addons/base/models/res_users.py
+++ b/odoo/addons/base/models/res_users.py
@@ -1796,6 +1796,32 @@ class UsersView(models.Model):
})
return res
+ def action_change_password(self):
+ if len(self) == 1:
+ view_id = self.env.ref('base.change_password_user_form_view').id
+ return {
+ 'name': _('Change Password'),
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'res_model': 'change.password.user',
+ 'type': 'ir.actions.act_window',
+ 'view_id': view_id,
+ 'views': [(view_id, 'form')],
+ 'context': {
+ 'default_user_id': self.id,
+ 'default_user_login': self.login,
+ },
+ }
+ else:
+ return {
+ 'name': _('Change Passwords'),
+ 'view_mode': 'form',
+ 'target': 'new',
+ 'res_model': 'change.password.wizard',
+ 'type': 'ir.actions.act_window',
+ 'views': [[False, 'form']],
+ }
+
class CheckIdentity(models.TransientModel):
""" Wizard used to re-check the user's credentials (password)
@@ -1854,7 +1880,7 @@ class ChangePasswordUser(models.TransientModel):
_name = 'change.password.user'
_description = 'User, Change Password Wizard'
- wizard_id = fields.Many2one('change.password.wizard', string='Wizard', required=True, ondelete='cascade')
+ wizard_id = fields.Many2one('change.password.wizard', string='Wizard', ondelete='cascade')
user_id = fields.Many2one('res.users', string='User', required=True, ondelete='cascade')
user_login = fields.Char(string='User Login', readonly=True)
new_passwd = fields.Char(string='New Password', default='')
diff --git a/odoo/addons/base/views/res_users_views.xml b/odoo/addons/base/views/res_users_views.xml
index 1d9f0206389..0ba5eaca74b 100644
--- a/odoo/addons/base/views/res_users_views.xml
+++ b/odoo/addons/base/views/res_users_views.xml
@@ -39,17 +39,45 @@
-
+
-
+
+
+ Change Password User
+ change.password.user
+
+
+
+
+
+
Change Password
- change.password.wizard
- form
- new
+ ir.actions.server
+
+
+ code
+
+if records:
+ action = records.action_change_password()
+