From 0e23d3f1d3c299f1d65f05e4bee0fc8e644d4f55 Mon Sep 17 00:00:00 2001 From: bch <> Date: Wed, 23 May 2007 07:44:42 +0000 Subject: [PATCH] Bugfix : fields, many2many : unlink and link action where wrong. bzr revid: bch-36cd48d1cbb4ced14870e4df415ce22be5cf1823 --- bin/osv/fields.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/osv/fields.py b/bin/osv/fields.py index bd37694895b..3032bf79d13 100644 --- a/bin/osv/fields.py +++ b/bin/osv/fields.py @@ -423,9 +423,9 @@ class many2many(_column): elif act[0]==2: obj.unlink(cr, user, [act[1]], context=context) elif act[0]==3: - cr.execute('update '+self._rel+' set '+self._id2+'=null where ' + self._id1 + '=%d', (act[1],)) + cr.execute('delete from '+self._rel+' where ' + self._id1 + '=%d and '+ self._id2 + '=%d', (id,act[1])) elif act[0]==4: - cr.execute('update '+self._rel+' set '+self._id2+'=%d where ' + self._id1 + '=%d and ' + self._id2 + '=%d', (act[1], id, act[1])) + cr.execute('insert into '+self._rel+' ('+self._id1+','+self._id2+') values (%d,%d)', (id,act[1])) elif act[0]==5: cr.execute('update '+self._rel+' set '+self._id2+'=null where '+self._id2+'=%d', (id,)) elif act[0]==6: @@ -435,7 +435,7 @@ class many2many(_column): d1 = ' and '+d1 cr.execute('delete from '+self._rel+' where '+self._id1+'=%d AND '+self._id2+' IN (SELECT '+self._rel+'.'+self._id2+' FROM '+self._rel+', '+obj._table+' WHERE '+self._rel+'.'+self._id1+'=%d AND '+self._rel+'.'+self._id2+' = '+obj._table+'.id '+ d1 +')', [id, id]+d2 ) - for act_nbr in act[2]: # XXX add clause ? [bch 20070518] + for act_nbr in act[2]: cr.execute('insert into '+self._rel+' ('+self._id1+','+self._id2+') values (%d, %d)', (id, act_nbr)) #