From 4c664bf1b15eb186004ccc9fbe11f71cc2b1ec98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 12 Apr 2020 23:21:08 +0200 Subject: [PATCH] Skip invalid branch of domain without the inverted field Those branches of the domain should not prevent to compute a proper inverted domain for the field as the other fields will be fixed later. issue9200 review311191002 --- trytond/tests/test_tools.py | 5 +++-- trytond/tools/domain_inversion.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/trytond/tests/test_tools.py b/trytond/tests/test_tools.py index 696e605d0e..95fd2108a2 100644 --- a/trytond/tests/test_tools.py +++ b/trytond/tests/test_tools.py @@ -367,7 +367,7 @@ class DomainInversionTestCase(unittest.TestCase): self.assertEqual( domain_inversion(domain, 'z', {'x': 5}), [['z', '=', 3]]) self.assertEqual( - domain_inversion(domain, 'z', {'x': 5, 'y': 5}), False) + domain_inversion(domain, 'z', {'x': 5, 'y': 5}), [['z', '=', 3]]) self.assertEqual( domain_inversion(domain, 'z', {'x': 5, 'y': 7}), [['z', '=', 3]]) @@ -376,7 +376,8 @@ class DomainInversionTestCase(unittest.TestCase): self.assertEqual(domain_inversion(domain, 'z'), [['z', '=', 3]]) self.assertEqual( domain_inversion(domain, 'z', {'x': 5}), [['z', '=', 3]]) - self.assertEqual(domain_inversion(domain, 'z', {'y': 5}), False) + self.assertEqual( + domain_inversion(domain, 'z', {'y': 5}), [['z', '=', 3]]) self.assertEqual( domain_inversion(domain, 'z', {'x': 4, 'y': 7}), [['z', '=', 3]]) diff --git a/trytond/tools/domain_inversion.py b/trytond/tools/domain_inversion.py index 620ed8d35e..0f3fa4956c 100644 --- a/trytond/tools/domain_inversion.py +++ b/trytond/tools/domain_inversion.py @@ -340,6 +340,8 @@ class And(object): if isinstance(part, And): part_inversion = part.inverse(symbol, context) evaluated = isinstance(part_inversion, bool) + if symbol not in part.variables: + continue if not evaluated: result.append(part_inversion) elif part_inversion: