diff --git a/product/ZSQLCatalog/SearchKey/DefaultKey.py b/product/ZSQLCatalog/SearchKey/DefaultKey.py index f1bc2d19c4a29299c0efcf745c6d7c7c128e78a2..2c8299efe44a1663ba76033f416eeeab605998fe 100644 --- a/product/ZSQLCatalog/SearchKey/DefaultKey.py +++ b/product/ZSQLCatalog/SearchKey/DefaultKey.py @@ -29,6 +29,7 @@ ############################################################################## from SearchKey import SearchKey +from Products.ZSQLCatalog.SearchText import parse from Products.ZSQLCatalog.Interface.ISearchKey import ISearchKey from Interface.Verify import verifyClass @@ -41,6 +42,9 @@ class DefaultKey(SearchKey): default_comparison_operator = '=' get_operator_from_value = True + def parseSearchText(self, value): + return parse(value) + def _guessComparisonOperator(self, value): if isinstance(value, basestring) and '%' in value: operator = 'like' diff --git a/product/ZSQLCatalog/tests/testSQLCatalog.py b/product/ZSQLCatalog/tests/testSQLCatalog.py index 8fbcb2f0df116a6c4bff2d9e54ee176c055ae0bf..c22386dff4da22a4549ee3d124403c330c552483 100644 --- a/product/ZSQLCatalog/tests/testSQLCatalog.py +++ b/product/ZSQLCatalog/tests/testSQLCatalog.py @@ -184,16 +184,20 @@ class TestSQLCatalog(unittest.TestCase): {column: '!=a'}) self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='a b'), operator='and'), {column: 'a b'}) - self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='a >b'), operator='and'), + self.catalog(ReferenceQuery(ReferenceQuery(ReferenceQuery(operator='=', default='a'), ReferenceQuery(operator='>', default='b'), operator='or'), operator='and'), {column: 'a >b'}) - self.catalog(ReferenceQuery(ReferenceQuery(operator='>', default='a >b'), operator='and'), + self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='a > b'), operator='and'), + {column: 'a > b'}) + self.catalog(ReferenceQuery(ReferenceQuery(ReferenceQuery(operator='>', default='a'), ReferenceQuery(operator='>', default='b'), operator='or'), operator='and'), {column: '>a >b'}) self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='>a >b'), operator='and'), {column: '">a >b"'}) self.catalog(ReferenceQuery(ReferenceQuery(operator='>', default='>a >b'), operator='and'), {column: '>">a >b"'}) - self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='a OR b'), operator='and'), + self.catalog(ReferenceQuery(ReferenceQuery(operator='in', default=['a', 'b']), operator='and'), {column: 'a OR b'}) + self.catalog(ReferenceQuery(ReferenceQuery(operator='=', default='a OR b'), operator='and'), + {column: '"a OR b"'}) self.catalog(ReferenceQuery(ReferenceQuery(operator='<', default='path'), operator='and'), {column: {'query': 'path', 'range': 'max'}}) self.catalog(ReferenceQuery(ReferenceQuery(operator='in', default=['a', 'b']), operator='and'),