[MERGE] forward port of branch saas-2 up to revid 5021 chs@openerp.com-20140318105837...
authorChristophe Simonis <chs@openerp.com>
Tue, 18 Mar 2014 11:45:40 +0000 (12:45 +0100)
committerChristophe Simonis <chs@openerp.com>
Tue, 18 Mar 2014 11:45:40 +0000 (12:45 +0100)
bzr revid: chs@openerp.com-20140318114540-l50kmo4azb57g31x

1  2 
openerp/addons/base/res/res_users.py

@@@ -870,69 -877,4 +870,73 @@@ class users_view(osv.osv)
                      }
          return res
  
 +#----------------------------------------------------------
 +# change password wizard
 +#----------------------------------------------------------
 +
 +class change_password_wizard(osv.TransientModel):
 +    """
 +        A wizard to manage the change of users' passwords
 +    """
 +
 +    _name = "change.password.wizard"
 +    _description = "Change Password Wizard"
 +    _columns = {
 +        'user_ids': fields.one2many('change.password.user', 'wizard_id', string='Users'),
 +    }
 +
 +    def default_get(self, cr, uid, fields, context=None):
 +        if context == None:
 +            context = {}
 +        user_ids = context.get('active_ids', [])
 +        wiz_id = context.get('active_id', None)
 +        res = []
 +        users = self.pool.get('res.users').browse(cr, uid, user_ids, context=context)
 +        for user in users:
 +            res.append((0, 0, {
 +                'wizard_id': wiz_id,
 +                'user_id': user.id,
 +                'user_login': user.login,
 +            }))
 +        return {'user_ids': res}
 +
 +    def change_password_button(self, cr, uid, id, context=None):
 +        wizard = self.browse(cr, uid, id, context=context)[0]
-         user_ids = []
-         for user in wizard.user_ids:
-             user_ids.append(user.id)
-         self.pool.get('change.password.user').change_password_button(cr, uid, user_ids, context=context)
++        need_reload = any(uid == user.user_id.id for user in wizard.user_ids)
++        line_ids = [user.id for user in wizard.user_ids]
++
++        self.pool.get('change.password.user').change_password_button(cr, uid, line_ids, context=context)
 +        # don't keep temporary password copies in the database longer than necessary
-         self.pool.get('change.password.user').write(cr, uid, user_ids, {'new_passwd': False}, context=context)
-         return {
-             'type': 'ir.actions.act_window_close',
-         }
++        self.pool.get('change.password.user').write(cr, uid, line_ids, {'new_passwd': False}, context=context)
++
++        if need_reload:
++            return {
++                'type': 'ir.actions.client',
++                'tag': 'reload'
++            }
++
++        return {'type': 'ir.actions.act_window_close'}
 +
 +class change_password_user(osv.TransientModel):
 +    """
 +        A model to configure users in the change password wizard
 +    """
 +
 +    _name = 'change.password.user'
 +    _description = 'Change Password Wizard User'
 +    _columns = {
 +        'wizard_id': fields.many2one('change.password.wizard', string='Wizard', required=True),
 +        'user_id': fields.many2one('res.users', string='User', required=True),
 +        'user_login': fields.char('User Login', readonly=True),
 +        'new_passwd': fields.char('New Password'),
 +    }
 +    _defaults = {
 +        'new_passwd': '',
 +    }
 +
 +    def change_password_button(self, cr, uid, ids, context=None):
 +        for user in self.browse(cr, uid, ids, context=context):
 +            self.pool.get('res.users').write(cr, uid, user.user_id.id, {'password': user.new_passwd})
 +
 +
  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: