diff --git a/openerp/models.py b/openerp/models.py index 3d9b1850f9d..40c04992287 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -5782,7 +5782,18 @@ class BaseModel(object): if 'domain' in method_res: result.setdefault('domain', {}).update(method_res['domain']) if 'warning' in method_res: - result['warning'] = method_res['warning'] + if 'warning' in result: + # Concatenate multiple warnings + warning = result['warning'] + warning['message'] = '\n\n'.join(filter(None, [ + warning.get('title'), + warning.get('message'), + method_res['warning'].get('title'), + method_res['warning'].get('message') + ])) + warning['title'] = _('Warnings') + else: + result['warning'] = method_res['warning'] return # onchange V7 @@ -5823,8 +5834,18 @@ class BaseModel(object): if 'domain' in method_res: result.setdefault('domain', {}).update(method_res['domain']) if 'warning' in method_res: - result['warning'] = method_res['warning'] - + if 'warning' in result: + # Concatenate multiple warnings + warning = result['warning'] + warning['message'] = '\n\n'.join(filter(None, [ + warning.get('title'), + warning.get('message'), + method_res['warning'].get('title'), + method_res['warning'].get('message') + ])) + warning['title'] = _('Warnings') + else: + result['warning'] = method_res['warning'] @api.multi def onchange(self, values, field_name, field_onchange): """ Perform an onchange on the given field.