From 0ec28519d4cf40fdc4063e7f4f25db3d37315673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 1 Sep 2022 22:08:52 +0200 Subject: [PATCH] Invert boolean operator in search_rec_name and strip code value issue11665 review427601003 --- country.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/country.py b/country.py index 5191e70efe..32f49104d1 100644 --- a/country.py +++ b/country.py @@ -63,10 +63,14 @@ class Country(DeactivableMixin, ModelSQL, ModelView): @classmethod def search_rec_name(cls, name, clause): + if clause[1].startswith('!') or clause[1].startswith('not '): + bool_op = 'AND' + else: + bool_op = 'OR' code_value = clause[2] if clause[1].endswith('like'): code_value = lstrip_wildcard(clause[2]) - return ['OR', + return [bool_op, ('name',) + tuple(clause[1:]), ('code', clause[1], code_value) + tuple(clause[3:]), ('code3', clause[1], code_value) + tuple(clause[3:]), @@ -288,9 +292,16 @@ class Subdivision(DeactivableMixin, ModelSQL, ModelView): @classmethod def search_rec_name(cls, name, clause): - return ['OR', + if clause[1].startswith('!') or clause[1].startswith('not '): + bool_op = 'AND' + else: + bool_op = 'OR' + code_value = clause[2] + if clause[1].endswith('like'): + code_value = lstrip_wildcard(clause[2]) + return [bool_op, ('name',) + tuple(clause[1:]), - ('code',) + tuple(clause[1:]), + ('code', clause[1], code_value) + tuple(clause[3:]), ] @classmethod @@ -354,7 +365,10 @@ class PostalCode(ModelSQL, ModelView): bool_op = 'AND' else: bool_op = 'OR' + code_value = clause[2] + if clause[1].endswith('like'): + code_value = lstrip_wildcard(clause[2]) return [bool_op, - ('postal_code',) + tuple(clause[1:]), + ('postal_code', clause[1], code_value) + tuple(clause[3:]), ('city',) + tuple(clause[1:]), ]