Support clause on multiselection field with operator in and value None
Closes #14520 (grafted from 7a8606077f4c574566fe75d8b74573b31c934980) --HG-- branch : 7.0
This commit is contained in:
@@ -91,7 +91,9 @@ class MultiSelection(SelectionMixin, Field):
|
||||
database = Transaction().database
|
||||
table, _ = tables[None]
|
||||
raw_column = self.sql_column(table)
|
||||
if isinstance(value, str):
|
||||
if value is None:
|
||||
expression = Literal(False)
|
||||
elif isinstance(value, str):
|
||||
try:
|
||||
expression = database.json_key_exists(raw_column, value)
|
||||
except NotImplementedError:
|
||||
|
||||
@@ -231,6 +231,32 @@ class FieldMultiSelectionTestCase(unittest.TestCase):
|
||||
|
||||
self.assertEqual(selections, [selection])
|
||||
|
||||
@with_transaction()
|
||||
def test_search_in_none(self):
|
||||
"Test search selection in None"
|
||||
Selection = Pool().get('test.multi_selection')
|
||||
selection, = Selection.create([{
|
||||
'selects': ['foo', 'bar'],
|
||||
}])
|
||||
|
||||
result = Selection.search([
|
||||
('selects', 'in', None),
|
||||
])
|
||||
self.assertEqual(result, [])
|
||||
|
||||
@with_transaction()
|
||||
def test_search_not_in_none(self):
|
||||
"Test search selection not in None"
|
||||
Selection = Pool().get('test.multi_selection')
|
||||
selection, = Selection.create([{
|
||||
'selects': ['foo', 'bar'],
|
||||
}])
|
||||
|
||||
result = Selection.search([
|
||||
('selects', 'not in', None),
|
||||
])
|
||||
self.assertEqual(result, [selection])
|
||||
|
||||
@with_transaction()
|
||||
def test_search_in_string(self):
|
||||
"Test search selection in string"
|
||||
|
||||
Reference in New Issue
Block a user