-
- Downloads
[FIX] core: is_false has lots of false negatives over RPC
`is_false` relies on no small part on equality tests between the input triplets and either `TRUE_LEAF` or `FALSE_LEAF`. While these are defined as tuples, RPC domains will always be lists (as neither XML-RPC nor JSON have tuples, and their arrays deserialize to Python lists). This is an issue, because tuple and list never compare equal. As a result, while the in / not in predicates can succeed, the TRUE_LEAF / FALSE_LEAF never will, and thus domains which contain either and might shortcut (avoid a query entirely) will always go through the entire process. Fix by having domain normalization also ensure all triplets are tuples: that's the first thing `is_false` does, it should never cause issues and could fix / improve / shortcut other routines. Note: Also implements TRUE_LEAF and FALSE_LEAF handling in the SSF's modifiers evaluator. And fixes the ValueError to work correctly if it breaks on a tuple / dict. closes odoo/odoo#39637 X-original-commit: 225f14e2 Signed-off-by:Xavier Morel (xmo) <xmo@odoo.com>
Loading
Please register or sign in to comment