changeset b61cd149ae9c in modules/account:5.0 details: https://hg.tryton.org/modules/account?cmd=changeset;node=b61cd149ae9c description: Do not recursively extend the base domain of parent and childs
The base class can not extend domain in __setup__ because it modify the field of the base class. issue7834 review52521004 (grafted from 14ec25c74350ddfd4bcd0f43e5eba9e94edf843a) diffstat: account.py | 11 ++++------- common.py | 14 +++++++++----- tax.py | 9 +++------ 3 files changed, 16 insertions(+), 18 deletions(-) diffs (83 lines): diff -r 83ce6ba286c4 -r b61cd149ae9c account.py --- a/account.py Wed Nov 07 19:01:14 2018 +0100 +++ b/account.py Sun Nov 18 12:00:11 2018 +0100 @@ -598,16 +598,13 @@ domain=[ ('company', '=', Eval('company')), ], depends=['kind', 'company']) - parent = fields.Many2One('account.account', 'Parent', select=True, - left="left", right="right", ondelete="RESTRICT", - domain=[('company', '=', Eval('company'))], - states=_states, depends=['company']) + parent = fields.Many2One( + 'account.account', 'Parent', select=True, + left="left", right="right", ondelete="RESTRICT", states=_states) left = fields.Integer('Left', required=True, select=True) right = fields.Integer('Right', required=True, select=True) childs = fields.One2Many( - 'account.account', 'parent', 'Children', - domain=[('company', '=', Eval('company'))], - depends=['company']) + 'account.account', 'parent', 'Children') balance = fields.Function(fields.Numeric('Balance', digits=(16, Eval('currency_digits', 2)), depends=['currency_digits']), 'get_balance') diff -r 83ce6ba286c4 -r b61cd149ae9c common.py --- a/common.py Wed Nov 07 19:01:14 2018 +0100 +++ b/common.py Sun Nov 18 12:00:11 2018 +0100 @@ -32,8 +32,11 @@ @classmethod def __setup__(cls): super().__setup__() - if hasattr(cls, 'parent') and hasattr(cls, 'childs'): - cls.parent.domain = [cls.parent.domain, + if (hasattr(cls, 'parent') + and hasattr(cls, 'childs') + and hasattr(cls, 'company')): + cls.parent.domain = [ + ('company', '=', Eval('company', 0)), ['OR', If(Bool(Eval('start_date')), ('start_date', '>=', Eval('start_date', None)), @@ -47,9 +50,10 @@ ('end_date', '=', None), ], ] - cls.parent.depends.extend(['start_date', 'end_date']) + cls.parent.depends.extend(['company', 'start_date', 'end_date']) - cls.childs.domain = [cls.childs.domain, + cls.childs.domain = [ + ('company', '=', Eval('company', 0)), If(Bool(Eval('start_date')), ('start_date', '>=', Eval('start_date', None)), ()), @@ -57,7 +61,7 @@ ('end_date', '<=', Eval('end_date', None)), ()), ] - cls.childs.depends.extend(['start_date', 'end_date']) + cls.childs.depends.extend(['company', 'start_date', 'end_date']) class ActivePeriodMixin(PeriodMixin): diff -r 83ce6ba286c4 -r b61cd149ae9c tax.py --- a/tax.py Wed Nov 07 19:01:14 2018 +0100 +++ b/tax.py Sun Nov 18 12:00:11 2018 +0100 @@ -137,13 +137,10 @@ code = fields.Char('Code', select=True, states=_states) company = fields.Many2One('company.company', 'Company', required=True, select=True) - parent = fields.Many2One('account.tax.code', 'Parent', select=True, - domain=[('company', '=', Eval('company', 0))], - states=_states, depends=['company']) + parent = fields.Many2One( + 'account.tax.code', 'Parent', select=True, states=_states) lines = fields.One2Many('account.tax.code.line', 'code', "Lines") - childs = fields.One2Many('account.tax.code', 'parent', 'Children', - domain=[('company', '=', Eval('company', 0))], - depends=['company']) + childs = fields.One2Many('account.tax.code', 'parent', 'Children') currency_digits = fields.Function(fields.Integer('Currency Digits'), 'on_change_with_currency_digits') amount = fields.Function(fields.Numeric(