[FIX] orm: ignore existing link for operation (4, x) in one2many fields

bzr revid: mat@openerp.com-20131206125403-r6uemlh7jagw01gh
This commit is contained in:
Martin Trigaux 2013-12-06 13:54:03 +01:00
parent 9652fb0013
commit 0be3333f96
1 changed files with 4 additions and 2 deletions

View File

@ -570,8 +570,10 @@ class one2many(_column):
else:
cr.execute('update '+_table+' set '+self._fields_id+'=null where id=%s', (act[1],))
elif act[0] == 4:
# Must use write() to recompute parent_store structure if needed
obj.write(cr, user, [act[1]], {self._fields_id:id}, context=context or {})
cr.execute("select 1 from {0} where id=%s and {1}!=%s".format(_table, self._fields_id), (act[1], id))
if cr.fetchone():
# Must use write() to recompute parent_store structure if needed and check access rules
obj.write(cr, user, [act[1]], {self._fields_id:id}, context=context or {})
elif act[0] == 5:
reverse_rel = obj._all_columns.get(self._fields_id)
assert reverse_rel, 'Trying to unlink the content of a o2m but the pointed model does not have a m2o'