From aceccd0c74177668dee34368dc9265ec9cda85ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 9 Jan 2009 18:42:00 +0100 Subject: [PATCH] Add depends attributes to Columns. It allow to specify a list of fields that are needed in the view for this one. Add active field by default in each views. --- trytond/osv/fields.py | 3 ++- trytond/osv/orm.py | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/trytond/osv/fields.py b/trytond/osv/fields.py index b5751d1810..fad4887908 100644 --- a/trytond/osv/fields.py +++ b/trytond/osv/fields.py @@ -54,7 +54,7 @@ class Column(object): domain=None, context='', states=None, priority=0, change_default=False, size=None, ondelete="SET NULL", translate=False, select=0, on_change=None, on_change_with=None, - **args): + depends=None, **args): self.states = states or {} self.string = string self.readonly = readonly @@ -67,6 +67,7 @@ class Column(object): self.translate = translate self._domain = domain or [] self._context = context + self.depends = depends or [] if select not in (0, 1, 2): raise Exception('Error', 'Select must be one of 0, 1, 2') self.select = select diff --git a/trytond/osv/orm.py b/trytond/osv/orm.py index dd11f523d4..eb477fae60 100644 --- a/trytond/osv/orm.py +++ b/trytond/osv/orm.py @@ -2184,6 +2184,18 @@ class ORM(object): fields_def = self.__view_look_dom(cursor, user, tree_root, type, fields_width=fields_width, context=context) + + for field_name in fields_def.keys(): + if field_name in self._columns: + field = self._columns[field_name] + else: + field = self._inherit_fields[field_name][2] + for depend in field.depends: + fields_def.setdefault(depend, {}) + + if ('active' in self._columns) or ('active' in self._inherit_fields): + fields_def.setdefault('active', {'select': "2"}) + arch = etree.tostring(tree, encoding='utf-8', pretty_print=False) fields2 = self.fields_get(cursor, user, fields_def.keys(), context) for field in fields_def: