From 4793c689394fd5b09b57c638d1078a2eaf4a188c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 7 Jul 2011 17:51:35 +0200 Subject: [PATCH 1/2] [imp] Improved modifiers algorithm to also take the "states" attribute into account. bzr revid: nicolas.vanhoren@openerp.com-20110707155135-jjinihfc6kylwf9k --- openerp/osv/orm.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index c8df66c55da..e651552dc99 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -77,9 +77,21 @@ module_class_list = {} ROOT_USER_ID = 1 def transfer_field_to_modifiers(field, modifiers): + default_values = {} + state_exceptions = {} for a in ('invisible', 'readonly', 'required'): + default_values[a] = False + state_exceptions[a] = [] if field.get(a): - modifiers[a] = bool(field.get(a)) + default_values[a] = bool(field.get(a)) + for state, modifs in (field.get("states") or {}).items(): + for modif in modifs: + if(default_values[modif[0]] != modif[1]): + state_exceptions[modif[0]].append(state) + + for attr, default_value in default_values.items(): + modifiers[attr] = [("state", "not in" if default_value else "in", state_exceptions[attr])] \ + if state_exceptions[attr] else default_value # Don't deal with groups, it is done by check_group(). From 7c01ea22f3971f50ab387d91fea702ee2adf953a Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Tue, 12 Jul 2011 16:35:32 +0200 Subject: [PATCH 2/2] [FIX] apply some merge review feeback bzr revid: al@openerp.com-20110712143532-s0jeuh5rglzwijpn --- openerp/osv/orm.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index e651552dc99..0c03c3e3f80 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -79,19 +79,19 @@ ROOT_USER_ID = 1 def transfer_field_to_modifiers(field, modifiers): default_values = {} state_exceptions = {} - for a in ('invisible', 'readonly', 'required'): - default_values[a] = False - state_exceptions[a] = [] - if field.get(a): - default_values[a] = bool(field.get(a)) - for state, modifs in (field.get("states") or {}).items(): + for attr in ('invisible', 'readonly', 'required'): + state_exceptions[attr] = [] + default_values[attr] = bool(field.get(attr)) + for state, modifs in (field.get("states",{})).items(): for modif in modifs: - if(default_values[modif[0]] != modif[1]): + if default_values[modif[0]] != modif[1]: state_exceptions[modif[0]].append(state) - + for attr, default_value in default_values.items(): - modifiers[attr] = [("state", "not in" if default_value else "in", state_exceptions[attr])] \ - if state_exceptions[attr] else default_value + if state_exceptions[attr]: + modifiers[attr] = [("state", "not in" if default_value else "in", state_exceptions[attr])] + else: + modifiers[attr] = default_value # Don't deal with groups, it is done by check_group().