[FIX] Behaviour of fields.related corrected for copy() and write() calls
authorJay (OpenERP) <>
Fri, 2 Apr 2010 11:32:46 +0000 (13:32 +0200)
committerStephane Wirtel <stephane@openerp.com>
Fri, 2 Apr 2010 11:32:46 +0000 (13:32 +0200)
lp bug: https://launchpad.net/bugs/544087 fixed

bzr revid: stephane@openerp.com-20100402113246-dq42pvoiy5n1xh7f

bin/osv/fields.py
bin/osv/orm.py

index 0728bfd..726b76b 100644 (file)
@@ -706,7 +706,7 @@ class related(function):
                 ids=[ids]
             objlst = obj.browse(cr, uid, ids)
             for data in objlst:
-                t_id=None
+                t_id = None
                 t_data = data
                 relation = obj._name
                 for i in range(len(self.arg)):
@@ -721,11 +721,13 @@ class related(function):
                         if self._type != "many2one":
                             t_id = t_data.id
                             t_data = t_data[self.arg[i]][0]
+                        else:
+                            t_data = False
+                            break
                     else:
                         t_id = t_data['id']
                         t_data = t_data[self.arg[i]]
-
-                if t_id:
+                if t_id and t_data:
                     obj.pool.get(field_detail['object']).write(cr,uid,[t_id],{args[-1]:values}, context=context)
 
     def _fnct_read(self, obj, cr, uid, ids, field_name, args, context=None):
index 1cac42c..e42cb21 100644 (file)
@@ -2796,7 +2796,8 @@ class orm(orm_template):
                     upd1 = upd1 + ',' + self._columns[field]._symbol_set[0]
                     upd2.append(self._columns[field]._symbol_set[1](vals[field]))
                 else:
-                    upd_todo.append(field)
+                    if not isinstance(self._columns[field],fields.related):
+                        upd_todo.append(field)
             if field in self._columns \
                     and hasattr(self._columns[field], 'selection') \
                     and vals[field]: