[MERGE] modifiers: fields state attribute support (niv)

bzr revid: al@openerp.com-20110712143816-b81j6qi418v2kir3
This commit is contained in:
Antony Lesuisse 2011-07-12 16:38:16 +02:00
commit cea05b572e
1 changed files with 15 additions and 3 deletions

View File

@ -77,9 +77,21 @@ module_class_list = {}
ROOT_USER_ID = 1
def transfer_field_to_modifiers(field, modifiers):
for a in ('invisible', 'readonly', 'required'):
if field.get(a):
modifiers[a] = bool(field.get(a))
default_values = {}
state_exceptions = {}
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]:
state_exceptions[modif[0]].append(state)
for attr, default_value in default_values.items():
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().