changeset 7fb5bf95e082 in tryton:default
details: https://hg.tryton.org/tryton?cmd=changeset;node=7fb5bf95e082
description:
Detect all wild cards and escaped wild cards in likify
issue10020
review320611002
diffstat:
tryton/common/domain_parser.py | 6 +++---
tryton/tests/test_common_domain_parser.py | 16 +++++++++++++++-
2 files changed, 18 insertions(+), 4 deletions(-)
diffs (52 lines):
diff -r 2e64570bb195 -r 7fb5bf95e082 tryton/common/domain_parser.py
--- a/tryton/common/domain_parser.py Fri Jan 29 00:04:29 2021 +0100
+++ b/tryton/common/domain_parser.py Wed Feb 03 19:30:13 2021 +0100
@@ -98,12 +98,12 @@
yield cur
-def likify(value):
+def likify(value, escape='\\'):
"Add % if needed"
if not value:
return '%'
- escaped = value.replace('%%', '__')
- if '%' in escaped:
+ escaped = value.replace(escape + '%', '').replace(escape + '_', '')
+ if '%' in escaped or '_' in escaped:
return value
else:
return '%' + value + '%'
diff -r 2e64570bb195 -r 7fb5bf95e082 tryton/tests/test_common_domain_parser.py
--- a/tryton/tests/test_common_domain_parser.py Fri Jan 29 00:04:29 2021 +0100
+++ b/tryton/tests/test_common_domain_parser.py Wed Feb 03 19:30:13 2021 +0100
@@ -7,7 +7,8 @@
from tryton.common import untimezoned_date
from tryton.common.domain_parser import (
group_operator, quote, split_target_value, convert_value, format_value,
- complete_value, parenthesize, rlist, operatorize, DomainParser, udlex)
+ complete_value, parenthesize, rlist, operatorize, DomainParser, udlex,
+ likify)
class DomainParserTestCase(TestCase):
@@ -26,6 +27,19 @@
self.assertEqual(
list(group_operator(iter(['a', '>', '=', '=']))), ['a', '>=', '='])
+ def test_likify(self):
+ "Test likify"
+ for value, result in [
+ ('', '%'),
+ ('foo', '%foo%'),
+ ('foo%', 'foo%'),
+ ('foo_bar', 'foo_bar'),
+ ('foo\\%', '%foo\\%%'),
+ ('foo\\_bar', '%foo\\_bar%'),
+ ]:
+ with self.subTest(value=value):
+ self.assertEqual(likify(value), result)
+
def test_quote(self):
"Test quote"
self.assertEqual(quote('test'), 'test')