summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVo Minh Thu <vmt@openerp.com>2011-05-25 17:01:51 +0200
committerVo Minh Thu <vmt@openerp.com>2011-05-25 17:01:51 +0200
commit8156aae67e1c809684dcfb33c70bd71df220665c (patch)
treee48c90d5016016c05b9a87ccfbd6d30f2c619b50
parentf06bea272fb7fc4cf58e6fb422b2b346a24ad21e (diff)
parent728fe04ba8670d5609a2c43f78019e8de75b0e3e (diff)
[MERGE] osv: custom fields are no more _inherited.
lp bug: https://launchpad.net/bugs/766944 fixed bzr revid: vmt@openerp.com-20110525150151-ksjmm5nc2foow3nx
-rw-r--r--bin/osv/fields.py9
-rw-r--r--bin/osv/orm.py1
-rw-r--r--bin/osv/osv.py10
3 files changed, 19 insertions, 1 deletions
diff --git a/bin/osv/fields.py b/bin/osv/fields.py
index 72df0e925ad..729ddcee14b 100644
--- a/bin/osv/fields.py
+++ b/bin/osv/fields.py
@@ -63,7 +63,13 @@ class _column(object):
_symbol_set = (_symbol_c, _symbol_f)
_symbol_get = None
- def __init__(self, string='unknown', required=False, readonly=False, domain=None, context=None, states=None, priority=0, change_default=False, size=None, ondelete="set null", translate=False, select=False, **args):
+ def __init__(self, string='unknown', required=False, readonly=False, domain=None, context=None, states=None, priority=0, change_default=False, size=None, ondelete="set null", translate=False, select=False, manual=False, **args):
+ """
+
+ The 'manual' keyword argument specifies if the field is a custom one.
+ It corresponds to the 'state' column in ir_model_fields.
+
+ """
if domain is None:
domain = []
if context is None:
@@ -84,6 +90,7 @@ class _column(object):
self.read = False
self.view_load = 0
self.select = select
+ self.manual = manual
self.selectable = True
self.group_operator = args.get('group_operator', False)
for a in args:
diff --git a/bin/osv/orm.py b/bin/osv/orm.py
index 91574e7fa6a..337125df29f 100644
--- a/bin/osv/orm.py
+++ b/bin/osv/orm.py
@@ -2826,6 +2826,7 @@ class orm(orm_template):
'size': field['size'],
'ondelete': field['on_delete'],
'translate': (field['translate']),
+ 'manual': True,
#'select': int(field['select_level'])
}
diff --git a/bin/osv/osv.py b/bin/osv/osv.py
index 138e8c8daab..0d8cad9e4e5 100644
--- a/bin/osv/osv.py
+++ b/bin/osv/osv.py
@@ -298,6 +298,11 @@ class osv_memory(osv_base, orm.orm_memory):
nattr = {}
for s in ('_columns', '_defaults'):
new = copy.copy(getattr(pool.get(parent_name), s))
+ if s == '_columns':
+ # Don't _inherit custom fields.
+ for c in new.keys():
+ if new[c].manual:
+ del new[c]
if hasattr(new, 'update'):
new.update(cls.__dict__.get(s, {}))
else:
@@ -332,6 +337,11 @@ class osv(osv_base, orm.orm):
nattr = {}
for s in ('_columns', '_defaults', '_inherits', '_constraints', '_sql_constraints'):
new = copy.copy(getattr(pool.get(parent_name), s))
+ if s == '_columns':
+ # Don't _inherit custom fields.
+ for c in new.keys():
+ if new[c].manual:
+ del new[c]
if hasattr(new, 'update'):
new.update(cls.__dict__.get(s, {}))
else: