[FIX] fields: in *2many convert_to_write(), return all fields for new records and dirty fields for existing records
This commit is contained in:
parent
5ae3215f21
commit
ebdbd9f8b7
|
@ -140,6 +140,9 @@ class TestOnChange(common.TransactionCase):
|
||||||
self.assertItemsEqual(result['value']['messages'], [
|
self.assertItemsEqual(result['value']['messages'], [
|
||||||
(0, 0, {
|
(0, 0, {
|
||||||
'name': "[%s] %s" % ("Foo", USER.name),
|
'name': "[%s] %s" % ("Foo", USER.name),
|
||||||
|
'body': BODY,
|
||||||
|
'author': USER.id,
|
||||||
|
'size': len(BODY),
|
||||||
}),
|
}),
|
||||||
(1, message.id, {
|
(1, message.id, {
|
||||||
'name': "[%s] %s" % ("Foo", USER.name),
|
'name': "[%s] %s" % ("Foo", USER.name),
|
||||||
|
|
|
@ -1577,12 +1577,13 @@ class _RelationalMulti(_Relational):
|
||||||
|
|
||||||
# add new and existing records
|
# add new and existing records
|
||||||
for record in value:
|
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 = {k: record._cache[k] for k in record._get_dirty() if k in fnames}
|
||||||
values = record._convert_to_write(values)
|
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:
|
else:
|
||||||
add_existing(record.id)
|
add_existing(record.id)
|
||||||
|
|
Loading…
Reference in New Issue