Reviewers: ,
Please review this at http://codereview.tryton.org/394003/ Affected files: M tryton/gui/window/view_form/model/field.py M tryton/gui/window/view_form/view/form_gtk/one2many.py Index: tryton/gui/window/view_form/model/field.py =================================================================== --- a/tryton/gui/window/view_form/model/field.py +++ b/tryton/gui/window/view_form/model/field.py @@ -13,6 +13,7 @@ from decimal import Decimal from tryton.translate import date_format from tryton.common import RPCExecute, RPCException +from tryton.pyson import PYSONDecoder class Field(object): @@ -752,6 +753,13 @@ screen_domain, attr_domain = self.domains_get(record) return localize_domain(inverse_leaf(screen_domain)) + attr_domain + def get_size(self, record): + size_expr = self.attrs.get('size') + if size_expr is None or isinstance(size_expr, int): + return size_expr + env = EvalEnvironment(record, False) + return PYSONDecoder(env).decode(size_expr) + class M2MField(O2MField): Index: tryton/gui/window/view_form/view/form_gtk/one2many.py =================================================================== --- a/tryton/gui/window/view_form/view/form_gtk/one2many.py +++ b/tryton/gui/window/view_form/view/form_gtk/one2many.py @@ -399,6 +399,14 @@ self.screen.display() return False new_group = field.get_client(record) + + field_size = field.get_size(record) + o2m_size = len([r for r in new_group if not r.deleted]) + if field_size is not None and o2m_size >= field_size: + self.but_new.set_sensitive(False) + if hasattr(self, 'but_add'): + self.but_add.set_sensitive(False) + if id(self.screen.group) != id(new_group): self.screen.group = new_group if (self.screen.current_view.view_type == 'tree') \ -- [email protected] mailing list
