From b7a2ebc8284b31b2a804f2cb632255317f90dd39 Mon Sep 17 00:00:00 2001
From: Olivier Dony <odo@openerp.com>
Date: Mon, 18 Oct 2010 18:16:38 +0200
Subject: [PATCH] [IMP] orm: _add_missing_default_values: handle o2m default
 values in the legacy form [{},{}] + inherited x2m defaults

bzr revid: odo@openerp.com-20101018161638-i6vtq13tczf2b707
---
 bin/osv/orm.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/bin/osv/orm.py b/bin/osv/orm.py
index 4c3c5d62d429..5f31771c90b8 100644
--- a/bin/osv/orm.py
+++ b/bin/osv/orm.py
@@ -1934,10 +1934,14 @@ class orm_template(object):
             # override defaults with the provided values, never allow the other way around
             defaults = self.default_get(cr, uid, missing_defaults, context)
             for dv in defaults:
-                # FIXME: also handle inherited m2m
-                if dv in self._columns and self._columns[dv]._type == 'many2many' \
+                if (dv in self._columns and self._columns[dv]._type == 'many2many') \
+                     or (dv in self._inherit_fields and self._inherit_fields[dv][2]._type == 'many2many') \
                         and defaults[dv] and isinstance(defaults[dv][0], (int, long)):
                     defaults[dv] = [(6, 0, defaults[dv])]
+                if dv in self._columns and self._columns[dv]._type == 'one2many' \
+                    or (dv in self._inherit_fields and self._inherit_fields[dv][2]._type == 'one2many') \
+                        and isinstance(defaults[dv], (list, tuple)) and isinstance(defaults[dv][0], dict):
+                    defaults[dv] = [(0, 0, x) for x in defaults[dv]]
             defaults.update(values)
             values = defaults
         return values
-- 
GitLab