[IMP] orm: copy() does not copy deprecated fields
bzr revid: chs@openerp.com-20131126185210-8kd5stdexa4ozn2m
This commit is contained in:
parent
bbd8f7bb98
commit
6347f9f4ea
|
@ -4991,8 +4991,8 @@ class BaseModel(object):
|
|||
context = {}
|
||||
|
||||
# avoid recursion through already copied records in case of circular relationship
|
||||
seen_map = context.setdefault('__copy_data_seen',{})
|
||||
if id in seen_map.setdefault(self._name,[]):
|
||||
seen_map = context.setdefault('__copy_data_seen', {})
|
||||
if id in seen_map.setdefault(self._name, []):
|
||||
return
|
||||
seen_map[self._name].append(id)
|
||||
|
||||
|
@ -5005,12 +5005,6 @@ class BaseModel(object):
|
|||
else:
|
||||
default['state'] = self._defaults['state']
|
||||
|
||||
data = self.read(cr, uid, [id,], context=context)
|
||||
if data:
|
||||
data = data[0]
|
||||
else:
|
||||
raise IndexError( _("Record #%d of %s not found, cannot copy!") %( id, self._name))
|
||||
|
||||
# build a black list of fields that should not be copied
|
||||
blacklist = set(MAGIC_COLUMNS + ['parent_left', 'parent_right'])
|
||||
def blacklist_given_fields(obj):
|
||||
|
@ -5023,8 +5017,21 @@ class BaseModel(object):
|
|||
blacklist.update(set(self.pool[other]._all_columns) - set(self._columns))
|
||||
else:
|
||||
blacklist_given_fields(self.pool[other])
|
||||
# blacklist deprecated fields
|
||||
for name, field in obj._columns.items():
|
||||
if field.deprecated:
|
||||
blacklist.add(name)
|
||||
|
||||
blacklist_given_fields(self)
|
||||
|
||||
fields_to_read = [f for f in self.check_field_access_rights(cr, uid, 'read', None)
|
||||
if f not in blacklist]
|
||||
data = self.read(cr, uid, [id], fields_to_read, context=context)
|
||||
if data:
|
||||
data = data[0]
|
||||
else:
|
||||
raise IndexError(_("Record #%d of %s not found, cannot copy!") % (id, self._name))
|
||||
|
||||
res = dict(default)
|
||||
for f, colinfo in self._all_columns.items():
|
||||
field = colinfo.column
|
||||
|
|
Loading…
Reference in New Issue