odoo/openerp/addons
Xavier ALT f02b23006b [FIX] fields: during an onchange(), do not invalidate *2many fields because of their domain
Our usage of domain on fields One2many seems to trigger an obscure behaviour on
onchange.

With the following (simplified) config:

    Message(models.Model):
        _name = 'test_new_api.message'
        important = fields.Boolean('Important')

    Discussion(models.Model):
        _name = 'test_new_api.discussion'
        name = fields.Char('Name')
        important_emails = fields.One2Many('test_new_api.emailmessage', 'discussion',
                                           domain=[('important', '=', True)])

    Email(models.Model):
        _name = 'test_new_api.emailmessage'
        _inherits = {'test_new_api.message': 'message'}

        discussion = fields.Many2one('test_new_api.discussion', 'Discussion')
        message = fields.Many2one('test_new_api.message', 'Message')

Steps:
- We change 'name' on discussion, triggers an `onchange()` call
- we ends up filling cache on virtual record (on secondary fields, we calling
  record.mapped('important_emails.important'))
- we get a cache miss ('important' field not provided, only 'important_emails' ids,
  i.e with no change on existing records)
- we fill the cache, this mark 'important' field as modified
- because of commit 5676d81 and because 'important' is that case is a related (i.e
  computed) field we triggers cache recomputation
- as there is no way to recompute 'important_emails' for virtual record (no real
  ID) we ends up with empty 'important_emails' generating removal of existing records.

=> Finally changing any value for 'test_new_api.discussion' that trigger an onchange
will always reset 'important_emails' to empty

Fixed by Raphael Collet <rco@odoo.com>, and test by Xavier Alt <xal@odoo.com>.
2016-06-17 17:50:25 +02:00
..
base [I18N] Update translation terms from Transifex 2016-06-12 03:06:37 +02:00
test_access_rights [ADD] test_access_rights: add test writing on many2many field with access rules 2016-01-08 11:58:34 +01:00
test_convert [FIX] remove deprecated checks/fast_suite test attributes from standard modules 2015-01-15 14:31:40 +01:00
test_converter [FIX] report,qweb: use non-beaking space between amount and currency 2015-05-05 08:27:04 +02:00
test_documentation_examples [FIX] remove deprecated checks/fast_suite test attributes from standard modules 2015-01-15 14:31:40 +01:00
test_exceptions [MERGE] new v8 api by rco 2014-07-06 17:05:41 +02:00
test_impex [FIX] YAML: `!menuitem` tag handling 2015-09-28 17:15:38 +02:00
test_inherit [FIX] test_inherit: wrong model passed to default function on field 2016-01-15 13:54:29 +01:00
test_inherits [FIX] model: wrong alias used in read query for multi-inherited field 2015-05-12 13:42:27 +02:00
test_limits move tests 2014-02-09 01:37:45 +01:00
test_new_api [FIX] fields: during an onchange(), do not invalidate *2many fields because of their domain 2016-06-17 17:50:25 +02:00
test_uninstall [REM] Unnecessary `size` parameters on char fields 2014-06-25 17:13:43 +02:00
test_workflow [FIX] remove deprecated checks/fast_suite test attributes from standard modules 2015-01-15 14:31:40 +01:00
__init__.py move tests 2014-02-09 01:37:45 +01:00