Fix domain_inversion for comparison of datetime with None
review359002 (transplanted from 49609073c798e7b019a5d2dc28dcebb627ad10dd)
This commit is contained in:
1 parent
ec8a7f3e51
commit
0fbc23f54a
1 file changed
+22
-1
@@ -3,6 +3,7 @@
|
||||
|
||||
import operator
|
||||
import types
|
||||
import datetime
|
||||
|
||||
|
||||
def in_(a, b):
|
||||
@@ -56,7 +57,18 @@ def eval_leaf(part, context, boolop=operator.and_):
|
||||
# We should consider that other domain inversion will set a correct
|
||||
# value to this field
|
||||
return True
|
||||
return OPERATORS[operand](context[field], value)
|
||||
context_field = context[field]
|
||||
if isinstance(context_field, datetime.date) and not value:
|
||||
if isinstance(context_field, datetime.datetime):
|
||||
value = datetime.datetime.min
|
||||
else:
|
||||
value = datetime.date.min
|
||||
if isinstance(value, datetime.date) and not context_field:
|
||||
if isinstance(value, datetime.datetime):
|
||||
context_field = datetime.datetime.min
|
||||
else:
|
||||
context_field = datetime.date.min
|
||||
return OPERATORS[operand](context_field, value)
|
||||
|
||||
|
||||
def inverse_leaf(domain):
|
||||
@@ -422,6 +434,15 @@ def test_evaldomain():
|
||||
assert eval_domain(domain, {'x': 6})
|
||||
assert not eval_domain(domain, {'x': 4})
|
||||
|
||||
domain = [['x', '>', None]]
|
||||
assert eval_domain(domain, {'x': datetime.date.today()})
|
||||
assert eval_domain(domain, {'x': datetime.datetime.now()})
|
||||
|
||||
domain = [['x', '<', datetime.date.today()]]
|
||||
assert eval_domain(domain, {'x': None})
|
||||
domain = [['x', '<', datetime.datetime.now()]]
|
||||
assert eval_domain(domain, {'x': None})
|
||||
|
||||
domain = [['x', 'in', [3, 5]]]
|
||||
assert eval_domain(domain, {'x': 3})
|
||||
assert not eval_domain(domain, {'x': 4})
|
||||
|
||||
Reference in new issue
Block a user