From 3dc30f5ea58d3098bb700e339677095147e1a841 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 25 May 2011 15:26:12 +0200 Subject: [PATCH 1/2] [FIX] osv: don't _inherit _custom fields. - a attribute 'manual' is added on _column to recognize accurately custom fields. bzr revid: vmt@openerp.com-20110525132612-dlxwlh4jvvfhyfsi --- bin/osv/fields.py | 9 ++++++++- bin/osv/orm.py | 1 + bin/osv/osv.py | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/bin/osv/fields.py b/bin/osv/fields.py index 72df0e925ad..7cac40f2ec8 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' kayword argument specify if the field is a custom one. It + correspond 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: From 728fe04ba8670d5609a2c43f78019e8de75b0e3e Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 25 May 2011 16:59:09 +0200 Subject: [PATCH 2/2] [FIX] typos. bzr revid: vmt@openerp.com-20110525145909-9f6h4wsr7mmwdzh7 --- bin/osv/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/osv/fields.py b/bin/osv/fields.py index 7cac40f2ec8..729ddcee14b 100644 --- a/bin/osv/fields.py +++ b/bin/osv/fields.py @@ -66,8 +66,8 @@ class _column(object): 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' kayword argument specify if the field is a custom one. It - correspond to the 'state' column in ir_model_fields. + 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: