[FIX] fields: in *2many convert_to_write(), return all fields for new records and dirty fields for existing records

This commit is contained in:
Raphael Collet 2014-11-25 11:25:50 +01:00
parent 5ae3215f21
commit ebdbd9f8b7
2 changed files with 9 additions and 5 deletions

View File

@ -140,6 +140,9 @@ class TestOnChange(common.TransactionCase):
self.assertItemsEqual(result['value']['messages'], [
(0, 0, {
'name': "[%s] %s" % ("Foo", USER.name),
'body': BODY,
'author': USER.id,
'size': len(BODY),
}),
(1, message.id, {
'name': "[%s] %s" % ("Foo", USER.name),

View File

@ -1577,13 +1577,14 @@ class _RelationalMulti(_Relational):
# add new and existing records
for record in value:
if not record.id or record._is_dirty():
if not record.id:
values = {k: v for k, v in record._cache.iteritems() if k in fnames}
values = record._convert_to_write(values)
result.append((0, 0, values))
elif record._is_dirty():
values = {k: record._cache[k] for k in record._get_dirty() if k in fnames}
values = record._convert_to_write(values)
if not record.id:
result.append((0, 0, values))
else:
result.append((1, record.id, values))
result.append((1, record.id, values))
else:
add_existing(record.id)