[FIX] orm write: do not try to store computed & stored fields for relational records deleted by *2many fields
opw-613772
This commit is contained in:
parent
0a9c64c17d
commit
f5f76094a7
|
@ -55,6 +55,7 @@ import simplejson
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
import types
|
import types
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
|
@ -4166,6 +4167,7 @@ class BaseModel(object):
|
||||||
"""
|
"""
|
||||||
readonly = None
|
readonly = None
|
||||||
self.check_field_access_rights(cr, user, 'write', vals.keys())
|
self.check_field_access_rights(cr, user, 'write', vals.keys())
|
||||||
|
deleted_related = defaultdict(list)
|
||||||
for field in vals.copy():
|
for field in vals.copy():
|
||||||
fobj = None
|
fobj = None
|
||||||
if field in self._columns:
|
if field in self._columns:
|
||||||
|
@ -4174,6 +4176,10 @@ class BaseModel(object):
|
||||||
fobj = self._inherit_fields[field][2]
|
fobj = self._inherit_fields[field][2]
|
||||||
if not fobj:
|
if not fobj:
|
||||||
continue
|
continue
|
||||||
|
if fobj._type in ['one2many', 'many2many'] and vals[field]:
|
||||||
|
for wtuple in vals[field]:
|
||||||
|
if isinstance(wtuple, (tuple, list)) and wtuple[0] == 2:
|
||||||
|
deleted_related[fobj._obj].append(wtuple[1])
|
||||||
groups = fobj.write
|
groups = fobj.write
|
||||||
|
|
||||||
if groups:
|
if groups:
|
||||||
|
@ -4380,6 +4386,7 @@ class BaseModel(object):
|
||||||
for id in ids_to_update:
|
for id in ids_to_update:
|
||||||
if id not in done[key]:
|
if id not in done[key]:
|
||||||
done[key][id] = True
|
done[key][id] = True
|
||||||
|
if id not in deleted_related[object]:
|
||||||
todo.append(id)
|
todo.append(id)
|
||||||
self.pool.get(object)._store_set_values(cr, user, todo, fields_to_recompute, context)
|
self.pool.get(object)._store_set_values(cr, user, todo, fields_to_recompute, context)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue