diff --git a/openerp/addons/base/tests/test_orm.py b/openerp/addons/base/tests/test_orm.py index 6a387eec325..624dee5888c 100644 --- a/openerp/addons/base/tests/test_orm.py +++ b/openerp/addons/base/tests/test_orm.py @@ -166,6 +166,10 @@ class TestORM(common.TransactionCase): ['date'], ['date:month', 'date:day'], lazy=False) self.assertEqual(len(rg), len(all_partners)) + def test_write_duplicate(self): + cr, uid, p1 = self.cr, self.uid, self.p1 + self.partner.write(cr, uid, [p1, p1], {'name': 'X'}) + class TestInherits(common.TransactionCase): """ test the behavior of the orm for models that use _inherits; diff --git a/openerp/models.py b/openerp/models.py index 7da181495a8..1fd2c7ae196 100644 --- a/openerp/models.py +++ b/openerp/models.py @@ -3896,7 +3896,7 @@ class BaseModel(object): self._table, ','.join('"%s"=%s' % u[:2] for u in updates), ) params = tuple(u[2] for u in updates if len(u) > 2) - for sub_ids in cr.split_for_in_conditions(ids): + for sub_ids in cr.split_for_in_conditions(set(ids)): cr.execute(query, params + (sub_ids,)) if cr.rowcount != len(sub_ids): raise MissingError(_('One of the records you are trying to modify has already been deleted (Document type: %s).') % self._description)