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(

Reply via email to